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

MySQL Discussion :

[debutant] Union de deux SELECT


Sujet :

MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut [debutant] Union de deux SELECT
    Comment faire en une seule requête la réunion de ces deux SELECT ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM invite, classe, groupe
    WHERE cdt_invite.ID=classe.ID
    AND invite.num=groupe.num
    ET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM invite, classe
    WHERE cdt_invite.ID=classe.ID
    AND invite.num=0
    Merci à tous

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Je ne suis pas sur de mon coup, mais je crois que pour pouvoir faire un UNION il faut que tes deux SELECT ramènent le même nombre de champs.
    Avec ton * tu ramènes tous les champs de 3 tables dans le premier cas et de 2 dans le second.
    Sinon SELECT …. UNION SELECT ….. devrait passer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Après réflexion si ton objectif et de ramener les enregistrements des 2 premières tables qu'ils aient ou pas un lien avec la troisième, tu serais mieux avec un LEFT JOIN.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Oui un UNION ne fonctionne pas
    The used SELECT statements have a different number of columns

    Mais comment batir ce LEFT JOIN ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM ((invite INNER JOIN classe ON cdt_invite.ID=classe.ID groupe) LEFT JOIN groupe ON invite.num=groupe.num)
    devrait te donner les enregistrements de la table invite qui sont assoicés aà la table classe qu'ils aient ou non un lien avec la table groupe.

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    je dirai, comme ça par hasard, le nombre de colonne est différent, il faut enlever l'étoile des paresseux et écrire explicitement les colonnes et se débrouiller pour qu'elles soient dans le même ordre dans les deux selects.

    http://mysql.developpez.com/faq/
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    La seule chose qu'on n'apprend pas forcement en cours ou dans un tuto pour débutant, c'est qu'on peut ajouter des colonnes constantes dans mysql, genre pour passer de 3 à 4 colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT "débutant" as niveau
    FROM DUAL;
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    J'ai essayé d'enlever l'étoile des paresseux et en mettant un seul champ commun. Cela ne fonctionnne pas

    Mais la requete de Pascal est correct !!

    Je n'ai plus qu'à la digérer !
    Merci à tous

  9. #9
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    la syntaxe de l'union est, si ma mémoire est bonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (
    SELECT "debut" as niveau 
    FROM DUAL 
    )
    UNION
    (
    SELECT "expert"
    FROM DUAL
    )
    mais c'est vrai que l'union possede une syntaxe imbitable. Les parenthèses sont obligatoires.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

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

Discussions similaires

  1. Union de deux select
    Par Hydromel dans le forum Débuter
    Réponses: 2
    Dernier message: 22/03/2012, 10h12
  2. Combinaison de deux selects simples
    Par devtrax dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/09/2004, 15h09
  3. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 15h32
  4. [Débutant] Union de deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2004, 11h40

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