Requete SQL Multi tables en PHP

Résolu
vallantin Messages postés 6 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 29 mars 2006 - 27 mars 2006 à 08:31
vallantin Messages postés 6 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 29 mars 2006 - 27 mars 2006 à 16:54
Bonjour,
je tente de faire fonctionner une requete multi table et je trouve pas d'exemples.
voici la requete en question :
SELECT four_nom, count( lign_code )
FROM produit, fournisseur, ligne_de_commande
WHERE four_code = prod_four_code
AND lign_prod_code = prod_code
AND lign_etat = 'EAC'
GROUP BY four_nom

Nous avons donc 3 tables avec un lien de Ligne de commande vers produit et de produit vers fournisseur.

Le but etant de sortir en affichage une liste des Noms de fournisseur présent dans la table ligne de commande avec le nombre de ligne le concernant dans cette table donc l'etat est en attente commande (lign_etat='EAC')

Merci par avance a tous.

6 réponses

vallantin Messages postés 6 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 29 mars 2006
27 mars 2006 à 16:54
Bon ben ma premiere requete fonctionne, le pb venait d'une autre requete dans le script qui elle ne pouvait pas marcher car incomplete mais avec le meme message d'erreur pour les deux...oups
Désolé pour le dérangement et merci a tous.

Le chemin est long jusque la connaissance...oui tres long LOL
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 mars 2006 à 09:14
Hello,

il nous faudrait la structure de tes 3 tables, ce serait plus simple.
0
vallantin Messages postés 6 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 29 mars 2006
27 mars 2006 à 09:29
Ok alors voila
Ligne_de_commande
`LIGN_CODE` int(11) NOT NULL auto_increment,
`LIGN_COM_CODE` int(11) default NULL,
`LIGN_PROD_CODE` int(11) default NULL,
`LIGN_QUAN` bigint(4) default NULL,
`LIGN_ETAT` char(32) default NULL,
`LIGN_STAT` char(4) default NULL,
`LIGN_UTIL_CODE` char(32) default NULL,
`LIGN_HC_LIB` char(32) default NULL,
`LIGN_HC_REF` char(32) default NULL,
`LIGN_HC_FOUR` char(32) default NULL,
`LIGN_HC_PRIX` decimal(10,2) default NULL,
PRIMARY KEY (`LIGN_CODE`),
KEY `I_FK_LIGNE_DE_COMMANDE_COMMANDE` (`LIGN_COM_CODE`),
KEY `I_FK_LIGNE_DE_COMMANDE_PRODUIT` (`LIGN_PROD_CODE`)

Produit
`PROD_CODE` int(11) NOT NULL auto_increment,
`PROD_FAMI_CODE` char(32) NOT NULL default '',
`PROD_FOUR_CODE` char(32) NOT NULL default '',
`PROD_REF` char(100) NOT NULL default '',
`PROD_LIB` char(32) NOT NULL default '',
`PROD_MARQ` char(32) default NULL,
`PROD_COND` char(32) default NULL,
`PROD_PUHT` decimal(10,2) default NULL,
`PROD_INDIV` tinyint(1) default NULL,
PRIMARY KEY (`PROD_CODE`),
KEY `I_FK_PRODUIT_FAMILLE_DE_PRODUIT` (`PROD_FAMI_CODE`),
KEY `I_FK_PRODUIT_FOURNISSEUR` (`PROD_FOUR_CODE`)

Fournisseur
`FOUR_CODE` char(32) NOT NULL default '',
`FOUR_NOM` char(100) NOT NULL default '',
`FOUR_ADR1` char(100) NOT NULL default '',
`FOUR_ADR2` char(100) NOT NULL default '',
`FOUR_CP` char(10) NOT NULL default '',
`FOUR_VILLE` char(100) NOT NULL default '',
`FOUR_FOM` tinyint(1) NOT NULL default '0',
`FOUR_TEL` char(32) default NULL,
`FOUR_FAX` char(32) default NULL,
`FOUR_MAIL` char(50) default NULL,
PRIMARY KEY (`FOUR_CODE`)

En fait voila le fonctionneùent de la chose :
des users crées des lignes de commandes en attente de commande
puis une coordinatrice vient faire la creation de bons de commandes en regroupant toutes ses lignes de commande par fournisseur (et la intervient ma requete multitable...)
Merci par avance d'autant plus que la suite du projet va necessiter plusieurs fois l'usage de SQL multitable...
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009
27 mars 2006 à 12:11
salut, met des IN a la place des et fais en requete imbriqué car le bloque quand il y a plusieurs occurences.
La synthaxe du IN est :

SELECT four_nom, count( lign_code )
FROM produit
WHERE prod_four_code IN(
SELECT four_code
FROM fournisseur)
AND tes autres jointures

voila bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vallantin Messages postés 6 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 29 mars 2006
27 mars 2006 à 15:14
oui sauf que dans produit je n'ai pas four_nom donc cela ne marche pas...
qqun pour une autre idée.

Le message obtenu est :
Champ 'four_nom' inconnu dans order clause
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009
27 mars 2006 à 15:49
non mais la je t'ai pas mis toute la requête voyons, c'est à toi de développer un peu.
tu rajoutes fournisseur dans ton from et tu fais tes autres jointures, ca devrait marcher normalement. Fainéant va lol
0