Mysql, sous-requête

Résolu
cinderela Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
cinderela Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Contributeur Dernière intervention   922
 
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   Statut Membre Dernière intervention  
 
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