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

Requêtes MySQL Discussion :

Combiner résultats plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Combiner résultats plusieurs tables
    Bonjour,

    Je cale sur une requête avec MySql. Alors je m'en remets à vous pour m'aiguiller vers la bonne méthode.

    J'ai deux tables avec les champs suivants :

    Table A : nom, cote, département
    Table B : nom, cote, ville

    Je voudrais mixer les résultats des deux tables en classant le tout sur base du champ "cote".

    Les points qui me paraissent importants :
    1- Il n'y a pas de relation entre le contenu des deux tables (en fait c'est une table avec les noms pour la France et l'autre avec les noms pour la Belgique).
    2- Tous les champs ne sont pas identiques dans les deux tables mais je dois pouvoir les afficher dans les résultats (afficher le nom et la ville pour les résultats pour la Belgique et afficher le nom et le département pour les résultats pour la France).

    Je cherche du côté des Union, jointure, table temporaire, mais je m'y perds un peu...

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Peux-tu nous donner le résultat d'un SHOW CREATE TABLE sur chacune des 2 tables
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Normalement un truc de ce genre doit marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select col1, col2 from (
    (select nom as col1, département as col2, cote as col3 from Table A)
    union
    (select nom as col1, ville as col2, cote as col3 from Table B)
    ) order by col3
    ça devrait remonter les nom et département ainsi que les nom et villes ordonnés par cote
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.

    J'ai fait quelques essais mais j'obtiens toujours : "erreur sql Every derived table must have its own alias".

    J'ai simplifié le code au max pour vérifier mais sans changement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT col1 FROM (
    (SELECT nom AS col1, cote AS col2 FROM TABLEA)
    union
    (SELECT nom AS col1, cote AS col2 FROM TABLEB)
    ) ORDER BY col2

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Apparemment dans MySQL les requête imbriquées doivent avoir un alias
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT resultat.col1, resultat.col2 FROM (
    (SELECT nom AS col1, département AS col2, cote AS col3 FROM TABLE A)
    union
    (SELECT nom AS col1, ville AS col2, cote AS col3 FROM TABLE B)
    ) resultat ORDER BY resultat.col3
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Avec les alias, comment fait-on pour appeler le champ "nom" dans la boucle while ?

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( $resultat = mysql_fetch_array($req))
    {
    print stripslashes (''.$resultat['nom'].'<br/>');
    }
    Mais j'ai le message : "Notice: Undefined index: .nom in xxx.php on line 71"

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    La boulette, nom n'existe plus puisque remplacé par col1

    Pour le reste cela marche !!

    Merci guigui5931

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/01/2014, 18h45
  2. [MySQL] résultat de plusieurs tables dans une seule page
    Par other1234 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/01/2013, 09h49
  3. [DATA] Concaténation de plusieurs tables suivie d'un test : résultat bizarre
    Par JeromeMATHIAS dans le forum SAS Base
    Réponses: 9
    Dernier message: 27/02/2012, 11h22
  4. [MySQL] Récuperer et afficher résultat de plusieurs tables
    Par YannCo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/03/2009, 00h59
  5. [MYSQL] sortir des résultats de plusieurs table en 1 fois
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/10/2005, 15h26

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