Хорошо, у меня есть запрос, который выглядит следующим образом:
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`
Я знаю, что это чудовище, и некоторые люди умрут, прежде чем не использовать явные объединения. Однако, игнорируя это, я хочу использовать CONCAT
внутри GROUP_CONCAT
, только если menu_items.price
больше 0, в противном случае возвращается только menu_items.name
. Однако я безуспешно пытался бросить туда IF
. Я прочитал руководство, но все способы, которые я пробовал, не работают, и я почти уверен, что что-то упускаю из-за условных утверждений.