Page 1 sur 1

Select multiples

Posté : 22 nov. 2005, 12:22
par Nadege21
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

Posté : 22 nov. 2005, 14:07
par pjl
Ca se fait en une seule requête avec une jointure.

Re: Select multiples

Posté : 01 déc. 2005, 13:22
par Olivier[Lyon]
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

Re: Select multiples

Posté : 01 déc. 2005, 13:34
par zeus

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

Re: Select multiples

Posté : 01 déc. 2005, 14:08
par Invité

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 >>>

Posté : 01 déc. 2005, 15:39
par zeus
A vérifier mais il me semble que l'utilisation de JOIN est a préferer à ta syntaxe.