Mysql, sous-requête

Résolu
cinderela Messages postés 52 Date d'inscription   Statut Membre -  
cinderela Messages postés 52 Date d'inscription   Statut Membre -
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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 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
  2. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    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
  3. cinderela Messages postés 52 Date d'inscription   Statut Membre
     
    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