J'utilise cette requête mais j'ai trouvé cette erreur Colonne inconnue 'stockout_details.purchi' dans 'sur la clause'

SELECT sale_nag,stockin_details.purchi,
       COALESCE(stockin_details.sale_nag,0) + stockin_details.sale_nag   result
FROM stockin_details LEFT JOIN 
     (SELECT SUM(sale_nag) AS snag
      FROM stockout_details
      WHERE purchi='a12'
      GROUP BY marka,chalan,room,rack
     ) stockout_details
     ON stockin_details.purchi=stockout_details.purchi
WHERE stockin_details.purchi='a12'
GROUP BY marka,chalan,room,rack
0
Muhammad Usman Rajpotzada 31 août 2020 à 13:48

2 réponses

Meilleure réponse

Vous devez inclure la colonne dans la sous-requête:

SELECT o.sale_nag, i.purchi,
       COALESCE(i.sale_nag,0) + i.sale_nag   result
FROM stockin_details i LEFT JOIN 
     (SELECT purchi, SUM(sale_nag) AS snag
      FROM stockout_details
      WHERE purchi = 'a12'
      GROUP BY marka, chalan, room, rack, purchi
     ) o
     ON i.purchi = o.purchi
WHERE i.purchi = 'a12'
GROUP BY i.marka, i.chalan, i.room, i.rack;

Notez que j'ai remplacé les alias de table par des alias plus faciles à gérer et qualifié tous les noms de colonnes.

Cela dit, je serais surpris si la requête faisait réellement quelque chose d'utile - le result n'utilise que les valeurs d'une table.

De plus, je m'attendrais à ce que les conditions join utilisent toutes les colonnes de l'agrégation. Si vous souhaitez obtenir de l'aide sur la requête, posez une nouvelle question. Fournissez des exemples de données, les résultats souhaités, une explication de ce que le code doit faire et une balise de base de données appropriée.

0
Gordon Linoff 31 août 2020 à 10:51

Vous devez inclure la colonne stockout_details.purchi dans votre sélection, alors vous seul pouvez l'utiliser dans la clause de jointure lorsque vous créez une sous-requête et c'est ce que Gordon essayait de mettre en évidence.

0
Atif 31 août 2020 à 10:56