[mysql] Problème de jointure [résolu merci antho1983]

Problème de jointure [résolu merci antho1983] [mysql] - SQL/NoSQL - Programmation

Marsh Posté le 10-05-2006 à 11:24:38    

Bonjour à tous :)
 
Je fait appel à votre aide car je bloque sur une requête avec jointure.
Je suis vraiment pas très fort lorsqu'il s'agit d'effectuer des jointures, voici les deux tables :
 
+-----------------+         +-------------------+
+commandes_detail+         +commandes_action +
+-----------------+         +-------------------+    
    detail_id                             action_id
    no_cde                               no_cde
    no_ligne                              no_ligne
    code_article                         no_bl  
    qte_article                           qte_livre    
    lib_article                             no_lot  
        ...                                     ...
 
J'utilise les variable $no_cde et $no_bl pour répérer les enregistrements.
Je voudrais récupérer dans commandes_detail le code_article, lib_article et dans commandes_action no_ligne, qte_livre, no_lot.
 
Merci d'avance pour votre aide  :jap:


Message édité par mc_cut_killer le 10-05-2006 à 11:46:06
Reply

Marsh Posté le 10-05-2006 à 11:24:38   

Reply

Marsh Posté le 10-05-2006 à 11:30:54    

select code_article, lib_article, commandes_actions.no_ligne, qte_livre from commandes_details, commandes_actions where commandes_detail.no_cde=commandes_action.no_cde;
 

Reply

Marsh Posté le 10-05-2006 à 11:35:35    

Merci je teste de suite :)
 
Par contre il me semblait qu'il fallait mettre JOIN la table à un moment ...

Reply

Marsh Posté le 10-05-2006 à 11:38:48    

alors çà marche?

Reply

Marsh Posté le 10-05-2006 à 11:38:59    

OK ca marche :) :) :)
 
Merci beaucoup pour ton aide, en fait j'étais dans la mauvaise voie en essayant de placer ce JOIN :(
 
@+

Reply

Marsh Posté le 10-05-2006 à 11:50:43    

non tu étais sur la bonne voie en essaye de placer join

Code :
  1. select code_article, lib_article, commandes_actions.no_ligne, qte_livre from commandes_details inner join commandes_actions on  commandes_detail.no_cde=commandes_action.no_cde


Et si tu veux également les commandes details qui n'ont pas d'actions ( dans la requete d'antho ou celle au dessus elles ne remontent pas), tu changes le "inner" en "left outer"

Reply

Marsh Posté le 10-05-2006 à 14:15:59    

Ok je vais essayer ta requête anapajari, car je trouve cette façon plus propre :)
 
Mais merci qd même à antho1983 car je savais pas qu'il était possible de procèder ainsi...


Message édité par mc_cut_killer le 10-05-2006 à 14:18:02
Reply

Marsh Posté le 10-05-2006 à 14:28:41    

Je confirme que les deux type de requêtes marchent nikel.
 
Par contre à chaque fois j'ai la ligne qui s'affiche en double, j'suis entrain de chercher pourquoi car j'ai qu'un bl pour l'instant ...

Reply

Marsh Posté le 10-05-2006 à 15:04:29    

utilise distinct dans ton select.
T'as une cle primaire dans tes tables?

Reply

Marsh Posté le 10-05-2006 à 15:08:33    

Oui j'ai mis action_id en auto_incrémente pour la clé primaire.
Du temps que j'y suis à chaque fois que je sais pas quoi mettre en clé primaire je met truc_id.  
Ca fait quoi de ne pas mettre de clé primaire ?, j'ai vu que certains le faisait.
 
J'essaye de mettre distinct ...
 
[Edit] Et re-merci ca fonctionne nickel, je vais voir à quoi correspond exactement ce distinct car je ne l'avais jamais utilisé ...


Message édité par mc_cut_killer le 10-05-2006 à 15:11:09
Reply

Marsh Posté le 10-05-2006 à 15:08:33   

Reply

Marsh Posté le 10-05-2006 à 15:12:33    

la clé primaire empêche d'avoir des doublons dans la table!!
 
exemple: table contient année mois
si t'as pas de clé primaire tu peut avoir 2006 3
                                                         2006 3
                                                          2005 3
alors que si tu met (annee mois) en cle primaire tu ne peut avoir que  
2006 3
2005 3

Reply

Marsh Posté le 10-05-2006 à 15:14:14    

Ok donc j'ai bien fait de mettre des clé primaires en auto-incrémente pour les tables ou je ne savais pas quoi mettre.
 
En tout cas encore merci pour ton aide et @bientôt :)


Message édité par mc_cut_killer le 10-05-2006 à 15:14:30
Reply

Marsh Posté le 10-05-2006 à 15:17:47    

nan pas sur car si je met une cle primaire en auto_incrémente dans la table annee mois je pourrait avoir 1  2006  3
                                2  2006  3
                                3  2006  3
Attention au clé auto incrémente!!!! (assez dangereux sur les grosses tables

Reply

Marsh Posté le 10-05-2006 à 15:24:18    

Effectivement c'est vrai, par exemple pour ma table produits les produits pouvaient avoir le même code mais pas le même indice.
code_produit ne pouvait pas marché en clé primaire, donc j'ai mis produit_id puis lorsque je crée un produit je vérifie que le nom n'existe pas déjà dans la bd.
 
En progressant je me suis dit que je pouvais aussi mettre code_produit-indice en clé primaire ... enfin merci pour tes précisions :):):)

Reply

Marsh Posté le 10-05-2006 à 15:27:08    

antho1983 a écrit :

nan pas sur car si je met une cle primaire en auto_incrémente dans la table annee mois je pourrait avoir 1  2006  3
                                2  2006  3
                                3  2006  3
Attention au clé auto incrémente!!!! (assez dangereux sur les grosses tables


Je serais très interessé que tu developpes le coté dangereux d'une clé primaire, auto-incrémentée sur des "grosses tables"... Pour ma culture hein!!!

Reply

Marsh Posté le 10-05-2006 à 15:29:48    

C'est juste une question de place. çà sert a koi d'avoir plusieurs fois les memes lignes dans la table avec juste une clé auto incrémentée différente? A utiliser un distinct dans les requetes?

Reply

Marsh Posté le 10-05-2006 à 15:31:38    

antho1983 a écrit :

C'est juste une question de place. çà sert a koi d'avoir plusieurs fois les memes lignes dans la table avec juste une clé auto incrémentée différente? A utiliser un distinct dans les requetes?


 :love:  :love:  :love:

Reply

Marsh Posté le 10-05-2006 à 15:36:58    

si çà t'amuse je voulais juste l'aider a comprendre

Reply

Marsh Posté le 10-05-2006 à 15:57:40    

nan mais c'est juste n'importe quoi ce que tu dis, ça m'amuse pas plus que ça [:spamafote]

Reply

Marsh Posté le 10-05-2006 à 15:59:39    

pkoi n'importe koi? Toi qui connais tout dis moi alors a koi çà sert d'avoir plusieurs ligne identique avec juste la clé auto-incrémentée qui change?

Reply

Marsh Posté le 10-05-2006 à 16:05:31    

Question con, pour une table produit si tu met le code_produit en clé primaire tu peut avoir plein de doublons aussi.
Ex: produit_1, Produit_1, pRoduit_1 ?

Reply

Marsh Posté le 10-05-2006 à 16:08:19    

ok! Soit une table Commande ( id, idProduit, Quantité) et une table Facture (id, idCommande, idClient)
J'ai mon client Paul ( idClient=1) qui achète 30 oranges ( idProduit=1) et mon client Pierre (idClient=2) qui achète 30 oranges ( idProduit=1).
Dans ma table commande j'ai

id idProduit Quantité
1  1         30
2  1         30


Dans ma table facture j'ai

id idCommande idClient
1  1            1
1  2            2


J'ai un doublon dans ma table commande, distingué par ma clé primaire id ( en auto-incrémente) pourtant cela ne concerne pas la même commande et ce n'est pas un doublon [:spamafote]
 
edit: balises fixed qui merdouillaient


Message édité par anapajari le 10-05-2006 à 16:16:14
Reply

Marsh Posté le 10-05-2006 à 16:13:04    

ben oui mais çà dépend de ce que tu veut faire c tout. (a quoi çà sert l'analyse sinon)

Reply

Marsh Posté le 10-05-2006 à 16:19:16    

C'est pas moi qui ai lancé le postulat suivant:

antho1983 a écrit :

Attention au clé auto incrémente!!!! (assez dangereux sur les grosses tables


ça encore une fois, c'est juste "n'importe quoi" [:spamafote]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed