Subquery returns more than 1 row
Résolu
julienbarr
-
julienbarr -
julienbarr -
Bonjour,
j'ai un soucis avec cette requête SQL :
SELECT(`total_ht`-
(SELECT (SUM(`buy_price_ht`*`qty`)) FROM `llx_facturedet` JOIN `llx_facture` ON `llx_facturedet`.fk_facture=`llx_facture`.`rowid` WHERE product_type!=0 AND `fk_facture`=`llx_facture`.`rowid` GROUP BY `fk_facture`)) FROM `llx_facturedet`
GROUP BY `fk_facture`
mais j'ai doit à une erreur "Subquery returns more than 1 row" .
En gros, je calcule une marge égale au total HT - prix de revient des produits.
Le "product_type!=0" me sert à ne pas prendre en compte le prix de revient des services.
Si ne mets pas le GROUP BY dans la sous requête pas d'erreur sauf qu'il soustrait le total de touts les prix de revient et pas uniquement de la facture concernée.
j'ai un soucis avec cette requête SQL :
SELECT(`total_ht`-
(SELECT (SUM(`buy_price_ht`*`qty`)) FROM `llx_facturedet` JOIN `llx_facture` ON `llx_facturedet`.fk_facture=`llx_facture`.`rowid` WHERE product_type!=0 AND `fk_facture`=`llx_facture`.`rowid` GROUP BY `fk_facture`)) FROM `llx_facturedet`
GROUP BY `fk_facture`
mais j'ai doit à une erreur "Subquery returns more than 1 row" .
En gros, je calcule une marge égale au total HT - prix de revient des produits.
Le "product_type!=0" me sert à ne pas prendre en compte le prix de revient des services.
Si ne mets pas le GROUP BY dans la sous requête pas d'erreur sauf qu'il soustrait le total de touts les prix de revient et pas uniquement de la facture concernée.
A voir également:
- Select subquery returns more than 1 row
- Initialize atkacpi device returns false - Forum Pilotes (drivers)
- Please plug in battery and its remaining capacity should be more than 20 - Forum BIOS
- Saint row 2 cheat code infinite respect - Forum Jeux vidéo
- Learn more pub - Forum Jeux vidéo
- #1242 - Subquery returns more than 1 row - Forum MySQL
1 réponse
Bonjour,
Quand on utilise une sous-requête dans la clause SELECT, il faut qu'elle ne renvoie qu'une seule ligne.
Du coup je te propose plutôt de mettre ta sous requête en tant que table jointe, comme ceci :
Xavier
Quand on utilise une sous-requête dans la clause SELECT, il faut qu'elle ne renvoie qu'une seule ligne.
Du coup je te propose plutôt de mettre ta sous requête en tant que table jointe, comme ceci :
SELECT fd.fk_facture, (fd.`total_ht`- s.somme) FROM `llx_facturedet` fd INNER JOIN ( SELECT (SUM(`buy_price_ht`*`qty`)) as somme, fd.fk_facture FROM `llx_facturedet` fd JOIN `llx_facture` f ON fd.fk_facture = f.`rowid` WHERE product_type!=0 GROUP BY fd.`fk_facture` ) s ON s.fk_facture = fd.fk_facture GROUP BY fd.`fk_facture`
Xavier
Merci beaucoup pour ton aide, c'est ce qu'il me fallait !
Juste rajouté un SUM pour prendre en compte le fait qu'il y ait plusieurs produits sur la facture :
J'aimerai mettre la deuxième marge juste après margeReelle.
Comment insérer ta requête dans cette requête?