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 :

Probleme double jointure


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut Probleme double jointure
    Bonjour,

    J'ai cette requete sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT itemnum, itemname, ti_itemmixinginfo.uniqueid, ti_itemmixingelement.sourceitemnum, ti_itemmixingelement.sourceitemcount
    FROM ti_item
    INNER JOIN ti_itemmixinginfo ON ti_item.itemnum = ti_itemmixinginfo.targetitemnum
    INNER JOIN ti_itemmixingelement on ti_itemmixinginfo.uniqueid = ti_itemmixingelement.uniqueid
    WHERE ti_itemmixinginfo.targetitemnum = 7008400
    Ce qui donne sa :
    Nom : unknown.png
Affichages : 244
Taille : 13,9 Ko

    sauf que l'itemname et toujours le meme
    il me faut afficher les itemname don't l'id et sourceitemnum

    et la table des nom est dans ti_item
    colonne itemname

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    IL nous faudrait la description des tables, un jeu de test et le résultat attendu.
    En attendant, je vais (tenter de ) réécrire ta requête en préfixant toutes les colonnes, et en utilisant des alias:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT item.ItemNum, item.ItemName, info.UniqueId, element.SourceµItemNum, element.SourceItemCount
    FROM ti_item as item
    INNER JOIN ti_itemmixinginfo as info ON item.ItemNum = info.TargetItemNum
    INNER JOIN element on info.UniqueId = element.UniqueId
    WHERE info.TargetItemNum = 7008400
    On vois sur la dernière ligne que tu fais une restriction sur info.TargetItemNum.
    Et d'après la première jointure, info.TargetItemNum = item.ItemNum
    Comme le nom est dans la table item, il est tout à fait normal que toutes les lignes affichent le même nom.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    Merci de ncotre reponse

    J'ai corrigé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT item.itemnum, item.itemname, info.uniqueid, element.sourceitemnum, element.sourceitemcount
    FROM ti_item as item
    INNER JOIN ti_itemmixinginfo as info ON item.ItemNum = info.TargetItemNum
    INNER JOIN ti_itemmixingelement as element on info.uniqueid = element.uniqueid
    WHERE info.targetitemnum = 7008400
    J'ai le meme reultat, comment afficher les nom des items correct, sachant que l'id et targetitemnum

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 137
    Points : 1 917
    Points
    1 917
    Par défaut
    Bonjour,

    Quelles sont les structures des tables? Quelles sont les clés primaires?
    Quand tu écris "et", veux-tu dire "est", car je ne suis pas sûr si tu veux une colonne ET une autre ou si tu dis qu'une donnée EST dans une colonne?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    il me faut afficher les itemname don't l'id est sourceitemnum

    et la table des nom est dans ti_item
    colonne itemname

    PS : j'ai edité les faute

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Le problème ici est que nous n'avons ni structure des table, ni jeu de test, ni résultat attendu.
    Du coup on ne sait pas en quoi le résultat est incorrect.
    Comme je l'indiquais, vu ta requête il est normal que toutes les lignes affichent le même nom, puisque tu filtres sur L'Id de la table item (indirectement certes).
    Si tu n'as donc qu'une ligne de item qui est retenue, toutes les lignes du résultat portent sur une seule ligne de Item, donc elles affichent toutes le même nom.
    Les alias que j'ai ajoutés dans la requête ne sont là que pour améliorer la lisibilité, ils ne changent rien au résultat.
    De même préfixer toutes les colonnes du SELECT nous permet de savoir quelle colonne vient de quelle table.

    Bref:
    1. Structure des tables (colonnes, clé primaire, liens entre elles)
    2. Jeu de test
    3. Résultat attendu

    Sans ces éléments, impossible de te répondre.

    Tatayo.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    J'ai 3 tablemais la requete et le resultat sont deja montré.

    Ce que j'attends c'est sa :
    Nom : item2.jpg
Affichages : 214
Taille : 17,7 Ko

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Citation Envoyé par Yu-Chan Voir le message
    J'ai 3 table mais la requête et le résultat sont déjà montrés.

    Nom : item2.jpg
Affichages : 214
Taille : 17,7 Ko
    Ce n'est pas le nombre de tables qui nous intéresse, mais la STRUCTURE de ces tables, et les liens entre elles (clés étrangères).
    On attends toujours aussi un jeu de test.
    Et le résultat que tu nous montres n'au aucun rapport avec la demande initiale.

    Par contre il ressemble étrangement à celui que tu veux dans une autre discussion.
    Ici tu sembles vouloir à partir d'un item source, avoir l'id et le nom d'un item "destination" (avec une ligne par couple source/destination ?). Dans l'autre, tu veux faire un pivot (ou ce qui ressemble à un pivot).
    Ce sont deux choses totalement différentes, qui demandes des requêtes totalement différentes.

    Et sans la structure des tables, sans connaitre les liens entre elles, sans jeu de test, tu n'auras aucune réponse.

    Tatayo.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    Donc voila la structure de
    ti_item : http://www.pastecode.fr/BFHqeb2WW8
    ti_itemmixinginfo : http://www.pastecode.fr/3DcppwV7C9
    ti_itemmixingelement : http://www.pastecode.fr/WiLH6gMEtJ


    Voila

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Il nous manque toujours le lien entre les tables, et le jeu de test…
    Mais surtout ce que tu demande là n'a aucun rapport avec la demande initiale, et correspond bien à cette autre discussion.

    Ta demande ici était d'afficher l'id et le nom d'un item A, et sur la même ligne l'id et le nom d'un item B. Ce qui nous fait une ligne par couple item A / Item B.
    Maintenant tu veux pour u item A tous les autres item qui lui sont liés.
    Ce n'est pas la même chose du tout.

    Tatayo.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    J'ai fait cette requête

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	    $sql = "select  distinct 
        ( SELECT t2.itemname FROM ti_item AS t2 WHERE t2.itemnum = ti_itemmixingelement.sourceitemnum ) AS itamename1, ti_itemmixingelement.sourceitemcount       
    from    ti_item        
    inner join ti_itemmixinginfo on  ti_item.itemnum = ti_itemmixinginfo.targetitemnum
    inner join ti_itemmixingelement   on  ti_itemmixinginfo.uniqueid = ti_itemmixingelement.uniqueid
    WHERE ti_itemmixinginfo.targetitemnum = {$id}";
    	    $conn = $this->bdd->prepare($sql);

    Ça fonctionne j'ai ce tableau en retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(4) { ["itamename1"]=> string(20) "High Purity Catalyst" [0]=> string(20) "High Purity Catalyst" ["sourceitemcount"]=> string(1) "1" [1]=> string(1) "1" } array(4) { ["itamename1"]=> string(22) "High Purity Netine Ore" [0]=> string(22) "High Purity Netine Ore" ["sourceitemcount"]=> string(1) "2" [1]=> string(1) "2" } array(4) { ["itamename1"]=> string(8) "Edcanium" [0]=> string(8) "Edcanium" ["sourceitemcount"]=> string(1) "1" [1]=> string(1) "1" } array(4) { ["itamename1"]=> string(15) "Soft Moissanite" [0]=> string(15) "Soft Moissanite" ["sourceitemcount"]=> string(1) "1" [1]=> string(1) "1" } array(4) { ["itamename1"]=> string(6) "Nickel" [0]=> string(6) "Nickel" ["sourceitemcount"]=> string(1) "1" [1]=> string(1) "1" }
    Mais ma question est comment récupérer item par item et récupérer sourceritemcount pour chaque colonne

    Nom : item3.jpg
Affichages : 120
Taille : 13,6 Ko

Discussions similaires

  1. [Requete] Probleme avec double jointure et cast
    Par guromgd dans le forum Développement
    Réponses: 5
    Dernier message: 04/05/2009, 13h42
  2. Probleme de Jointures imbriquées dans une requête
    Par Crevin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/04/2005, 11h05
  3. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  4. Doubles jointures externes....
    Par HPJ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/11/2004, 15h28
  5. [jointure]requete possible de double jointure entre 2 tables
    Par akira_le_gaucher dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/05/2004, 15h03

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