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 :

Requete multitables sql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut Requete multitables sql
    Bonjour a tous,

    je cherche a faire une requete pour afficher des noms et types. en les classant par type.
    Les nom sont repartis sur 3 tables. J'ai 3 tables : artists labels et publishers
    la table artists a pour champ idartist et type ainsi que d'autre champ
    la table labels a pour champ idlabel et type ainsi que d'autre champ
    la table publishers a pour champ idpublisher et type ainsi que d'autre champ

    J'utilise comme requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT distinct idartist,idlabel,idpublisher from artists,labels,publishers


    ma table artists contient 25 enregistrements
    labels contient 4 enregistrements
    publishers contient 2 enregistrements

    je ne comprend pas pourquoi je me retrouve avec 8 fois les meme idartist et des doublons pour les autres tables alors que je mes idartist son unique dans la table artistes et pareil pour les autre tables.

    Est ce que vous avez une idée merci bien

    Cordialement

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM artists,labels,publishers
    La partie de votre requête ci-dessus fait un produit cartésien entre les trois tables.
    Dans le résultat que vous affichez, vous n'avez bien que des lignes (triplets {idartist, idlabel, idpublisher}) différentes. Tout est normal !

    je ne comprend pas pourquoi je me retrouve avec 8 fois les meme idartist et des doublons pour les autres tables alors que je mes idartist son unique dans la table artistes et pareil pour les autre tables.
    ma table artists contient 25 enregistrements
    labels contient 4 enregistrements
    publishers contient 2 enregistrements
    Par le produit cartésien :
    - Chaque label est associé à chaque publisher, soit 4 x 2 = 8 couples différents ;
    - Chaque artiste est associé à chaque couple {label, publisher} soit 25 x 8 triplets différents et chaque artiste apparaît ainsi 8 fois dans le résultat. C'est tout à fait normal, c'est comme ça que fonctionne un SGBD.

    je cherche a faire une requete pour afficher des noms et types
    Je ne vois aucun nom dans la description de vos tables !

    Prenez le temps d'apprendre un peu le SQL et décrivez-nous plus précisément votre besoin.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut
    Merci pour la reponse et les details.

    Je cherche a afficher cela:

    idartist : 1 | name: toto | type: artist
    idartist : 2 | name: titi | type: artist
    idartist : 3 | name: tutu | type: artist
    idlabel : 1 | name: erik | type: label
    idlabel : 1 | name: soni | type: label
    idpublisher : 1 | name: deve | type: publisher
    etc

    Mon probleme est que je ne vois pas quel type de requete je dois faire.

    Cordialement

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ca fait trois requêtes !
    Vous mélangez dans la première colonne les artistes, les labels et les publishers !
    C'est comme si dans la gestion d'une entreprise, vous mélangiez les personnes, les véhicules et les produits !

    Je cherche a afficher cela:

    idartist : 1 | name: toto | type: artist
    idartist : 2 | name: titi | type: artist
    idartist : 3 | name: tutu | type: artist
    idlabel : 1 | name: erik | type: label
    idlabel : 1 | name: soni | type: label
    idpublisher : 1 | name: deve | type: publisher
    Si tous les artistes sont de type artist, tous les label de type label et tous les publishers de type publisher, à quoi sert la colonne type dans les trois tables ?

    Bref, je ne comprends toujours pas votre besoin !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut
    Je pense aussi que je dois faire 3 requetes pour avoir ce resultat:

    est ce correcte??

    Mais si je souhaite reorganiser mon tableau par Name ou ID je ne pourrais pas faire 3 requetes!

    En esperant que le screenshot vous aide aussi a comprendre.

    Cordialement

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Par défaut
    Dans ce cas, il est possible d'utiliser l'instruction UNION (http://dev.mysql.com/doc/refman/5.0/fr/union.html) pour pouvoir mettre tous les resultat et les trier dans la meme requete.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (SELECT idartist AS id, name, 'artists' AS kind FROM artists)
    UNION
    (SELECT idlabel AS id, name, 'labels' AS kind FROM labels)
    UNION
    (SELECT idpublisher AS id, name, 'publishers' AS kind FROM publishers)
    ORDER BY name

Discussions similaires

  1. Optimisation de requete PL/SQL
    Par lapartdombre dans le forum PL/SQL
    Réponses: 12
    Dernier message: 14/11/2005, 12h51
  2. Problème requete multitables
    Par dl_jarod dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/10/2005, 10h33
  3. equivalence requete en sql server
    Par voyageur dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/12/2004, 16h08
  4. requete date sql
    Par tommath dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/08/2004, 17h20
  5. requete syntaxe sql
    Par tomm dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/04/2004, 16h56

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