D'accord, donc j'ai une question qui ressemble à ceci:conditionnelle MySQL déclaration
SELECT
`orders`.*,
GROUP_CONCAT(
CONCAT(
`menu_items`.`name`,
' ($',
FORMAT(`menu_items`.`price`,2),
')'
) SEPARATOR '<br>'
) as `items`,
SUM(`menu_items`.`price`) as `additional`,
`children`.`first_name`,
`children`.`last_name`,
`organizations`.`base_price`
FROM
`orders`, `order_items`, `menu_items`, `children`, `organizations`
WHERE
`order_items`.`menu_item_id` = `menu_items`.`id` AND
`order_items`.`order_id` = `orders`.`id` AND
`orders`.`added_by` = {$user_id} AND
`orders`.`date` > '{$cutoff}' AND
`children`.`id` = `orders`.`child_id` AND
`organizations`.`id` = `children`.`organization_id`
GROUP BY
`orders`.`id`
Je sais que c'est une monstruosité et que certaines personnes vont mourir avant d'ne pas utiliser jointures explicites. En ignorant cela, cependant, ce que je souhaite faire est d'utiliser seulement le CONCAT
à l'intérieur du GROUP_CONCAT
si le menu_items.price
est supérieur à 0, sinon retourner seulement. J'ai eu, cependant, aucun succès en essayant de jeter un IF
là. J'ai lu le manuel, mais toutes les méthodes que j'ai essayées ne fonctionnent pas et je suis presque sûr qu'il me manque quelque chose sur l'ensemble des déclarations conditionnelles.
oooh, le formatage des chaînes à l'intérieur de SQL me met en colère! Surtout le
, pas de danger de MVC ici! :) Avec cela sur ma poitrine, vous pouvez toujours envelopper la chaîne CONCATed avec un REMPLACEMENT (X, '
($ 0.00)', '') si vous ne pouvez pas comprendre autre chose. – joelhardi
Hahaha. Eh bien parfois tu dois faire ce que tu dois faire. Et ça fait l'affaire. :) –