Select multiples

Nadege21
Invité n'ayant pas de compte PHPfrance

22 nov. 2005, 12:22

Bonjour
J'ai encore des problemes avec mes requetes........
C'est un peu compliqué je vais essayer d'etre claire
j'ai 2 tables

Produits (avec 3 champs)
Pnum |Pdos |Ptype dont les enregistrements sont :
8 |NAD001R |Commande


Listing (avec 2 champs)
PLart | Plpiece dont les enregistrements sont
REF001 |8


Je dois recuperer le champs PLart de listing en passant par la table produits
je rentre par la table produits grace au champs Pdos
SELECT Pnum FROM produits WHERE produits.PDos ='NAD001R'
AND produits.Ptype='Commande'
ensuite je dois rechercher dans cette meme requete (quand j'ai recupere le Pnum) si produits.Pnum=listing.Plpiece alors ecrire Plart
mais je ne trouve pas comment
Je precise que le numero de Pnum est dynamique et que je dois recuperer le numero en face de Commande.

merci
Nadege

ViPHP
pjl
ViPHP | 2119 Messages

22 nov. 2005, 14:07

Ca se fait en une seule requête avec une jointure.

Olivier[Lyon]
Invité n'ayant pas de compte PHPfrance

01 déc. 2005, 13:22

Bonjour
J'ai encore des problemes avec mes requetes........
C'est un peu compliqué je vais essayer d'etre claire
j'ai 2 tables

Produits (avec 3 champs)
Pnum |Pdos |Ptype dont les enregistrements sont :
8 |NAD001R |Commande


Listing (avec 2 champs)
PLart | Plpiece dont les enregistrements sont
REF001 |8


Je dois recuperer le champs PLart de listing en passant par la table produits
je rentre par la table produits grace au champs Pdos
SELECT Pnum FROM produits WHERE produits.PDos ='NAD001R'
AND produits.Ptype='Commande'
ensuite je dois rechercher dans cette meme requete (quand j'ai recupere le Pnum) si produits.Pnum=listing.Plpiece alors ecrire Plart
mais je ne trouve pas comment
Je precise que le numero de Pnum est dynamique et que je dois recuperer le numero en face de Commande.

merci
Nadege

Code : Tout sélectionner

SELECT LI.Plart FROM produits PO, listing LI WHERE PO.PDos ='NAD001R' AND PO.Ptype='Commande' AND LI.Plpiece = PO.Pnum
voili voilou

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 déc. 2005, 13:34

Code : Tout sélectionner

SELECT LI.Plart FROM produits PO, listing LI WHERE PO.PDos ='NAD001R' AND PO.Ptype='Commande' AND LI.Plpiece = PO.Pnum
Tu as oublié la jointure. Si elle as plusieurs lignes par table, elle va faire un produit cartésien

essaye plutôt

Code : Tout sélectionner

SELECT LI.Plart FROM produits PO JOIN listing LI ON PO.Pnum=LI.Plpiece WHERE PO.PDos ='NAD001R' AND PO.Ptype='Commande' AND LI.Plpiece = PO.Pnum
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

01 déc. 2005, 14:08

Code : Tout sélectionner

SELECT LI.Plart FROM produits PO, listing LI WHERE PO.PDos ='NAD001R' AND PO.Ptype='Commande' AND LI.Plpiece = PO.Pnum
Tu as oublié la jointure. Si elle as plusieurs lignes par table, elle va faire un produit cartésien

essaye plutôt

Code : Tout sélectionner

SELECT LI.Plart FROM produits PO JOIN listing LI ON PO.Pnum=LI.Plpiece WHERE PO.PDos ='NAD001R' AND PO.Ptype='Commande' AND LI.Plpiece = PO.Pnum
Elle y est déjà la jointure <<< LI.Plpiece = PO.Pnum >>>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 déc. 2005, 15:39

A vérifier mais il me semble que l'utilisation de JOIN est a préferer à ta syntaxe.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer