IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Quelle est la différence entre ces 2 requêtes ?


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Points : 301
    Points
    301
    Par défaut Quelle est la différence entre ces 2 requêtes ?
    Bonjour,

    Je dois récupéré des données venant de beaucoup de tables, et cette requête n'est pas valable :


    (Elle n'est pas valable sous Symfony mais fonctionne sous SQL, impossible de modifier ces données)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select d.id, count(*) as total, a.raison_sociale as raison
    from devis d, concession co, agence a, devis_etape_suivi s, arbre_suivi ass
    where d.concession_id!='' and d.concession_id = co.id and co.agence_id = a.id and s.etape_id=ass.id and ass.partial>="etape_3_1_1"
    GROUP BY a.id;
    par contre cette requête est valable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    select d.*, count(*) as total, a.raison_sociale as raison
    from devis d, concession co, agence a, devis_etape_suivi s
    where co.agence_id = a.id and d.concession_id = co.id and d.id = s.devis_id and d.concession_id!='' and s.etape_id IN(Select id from arbre_suivi where partial>= "etape_3_1_1")
    GROUP BY a.id;
    La première requête me renvoit beaucoup de résultats, mais la 2e, très peu.

    Pourtant je ne vois pas de différence entre ces 2 versions.

    Avez-vous une idée ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 242
    Points : 12 874
    Points
    12 874
    Par défaut
    Bonjour,
    Dans la première, tu as une jointure entre devis_etape_suivi et arbre_suivi, mais avec aucune autre table. C'est plus visible quand tu réécris la requête avec des JOINs:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT d.id, count(*) AS total, a.raison_sociale AS raison
    FROM devis d
    inner join concession co on d.concession_id = co.id 
    inner join agence a on co.agence_id = a.id
    inner join devis_etape_suivi s //ICI IL MANQUE QUELQUECHOSE
    inner join arbre_suivi ass on s.etape_id=ass.id
    WHERE d.concession_id!='' ass.partial>="etape_3_1_1"
    GROUP BY a.id;

    Je dirais que la jointure manquante serait
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    d.id = s.devis_id

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Points : 301
    Points
    301
    Par défaut
    En effet, il manquait cette relation.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle est la différence entre ces deux DSP?
    Par eclipse2007 dans le forum Signal
    Réponses: 2
    Dernier message: 17/02/2015, 19h26
  2. Quelle est la différence entre ces deux choses
    Par pierrot10 dans le forum jQuery
    Réponses: 3
    Dernier message: 26/01/2012, 11h37
  3. Quelle est la différence entre ces deux déclarations ?
    Par sidahmed dans le forum Débuter
    Réponses: 15
    Dernier message: 04/10/2007, 19h59
  4. Réponses: 6
    Dernier message: 13/05/2007, 23h14
  5. [Conception] Quelle est la différence entre ces modèles ?
    Par ukanoldai dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 10/01/2007, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo