Mysql, sous-requête

Résolu/Fermé
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 - 23 août 2007 à 10:20
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 - 24 août 2007 à 11:48
Bonjour à tous,

Je voulais faire une sous-requête qui affiche une table dont la quantité de produit sont bas. J'ai fait

$query = "SELECT produit_ID, stock_ID, quantite, remarque FROM tblproduit_stock
WHERE quantite <
(SELECT niveau_réapprov FROM tblproduit where produit_ID.tblproduit_stock == produit_ID.tblproduit) ORDER BY produit_ID";

et puis le système dit qu'il y a un ligne de plus.

Quelqu'un a une idée?
Merci d'avance,
Cinderela

3 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 août 2007 à 13:33
En passant, j'aurais préféré une jointure à une sous-requête. Surtout que dans la sous requête, tu inverses l'ordre table.champ, en mettant champ.table.

Voilà ce que je mettrais à ta place :
SELECT s.produit_ID, s.stock_ID, s.quantite, s.remarque
FROM tblproduit_stock s
JOIN tbl_produit p ON p.produit_ID = s.produit_ID
WHERE s.quantite < p.niveau_réapprov
Et je rejoins Dalida pour dire que les accents dans les noms de champs peuvent apporter quelques soucis...

Xavier
1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
23 août 2007 à 13:22
salut,

"le système dit qu'il y a un ligne de plus"
que veux-tu dire ?

il faut peut-être limiter le nombre de lignes retournées par la deuxième requête avec un 'LIMIT'.
"SELECT produit_ID, stock_ID, quantite, remarque FROM tblproduit_stock
WHERE quantite <
(SELECT niveau_réapprov FROM tblproduit WHERE produit_ID.tblproduit_stock == produit_ID.tblproduit LIMIT 1) ORDER BY produit_ID"

et les accents dans les noms de champs c'est pas terrible…
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
24 août 2007 à 11:48
Salut,

Merci beaucoup à Dalida et Xavier. ça marche avec

SELECT s.produit_ID, s.stock_ID, s.quantite, s.remarque
FROM tblproduit_stock s
JOIN tblproduit p ON p.produit_ID = s.produit_ID
WHERE s.quantite < p.niveau_réapprov

puis celle de Dalida, je change just le produit_ID.tblproduit == produit_ID.tblproduit_stock
à tblproduit.produit_ID = tblproduit_stock.produit_ID

et voilà, maintenant ça marche avec tous les deux requêtes :-)

Bonne journée,
Cinderela
0