Так что я хочу запускать разные запросы в зависимости от того, является ли одно поле нулевым. Вот что у меня естьЗапустить конкретный запрос, если поле равно
SELECT
CASE
WHEN vehicle_uid IS NULL THEN (SELECT lic_num, vehicle_make, vehicle_model, zone.name
FROM notice
INNER JOIN zone on notice.zone_uid = zone.uid
WHERE lic_num IN (
SELECT lic_num
FROM notice
GROUP BY lic_num
HAVING count(*) > 1
))
ELSE (SELECT lic_num, vehicle_uid, model.model, make.make, zone.name
FROM notice
INNER JOIN vehicle_model AS model ON notice.vehicle_uid = model.uid
INNER JOIN vehicle_make AS make ON model.vehicle_make_uid = make.uid
INNER JOIN zone on notice.zone_uid = zone.uid
WHERE lic_num IN (
SELECT lic_num
FROM notice
GROUP BY lic_num
HAVING count(*) > 1
))
END
ошибка я получаю #1054 - Unknown column 'vehicle_uid' in 'field list'
Когда я изменить WHEN vehicle_uid IS NULL
к WHEN notice.vehicle_uid IS NULL
ошибка говорит: #1109 - Unknown table 'notice' in field list
Я также попытался
SELECT CASE vehicle_uid WHEN IS NULL THEN ...
и следующее сообщение об ошибке появляется: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NULL THEN (SELECT lic_num, vehicle_make, vehicle_model, zone.name FROM n' at line 3
Я только начинаю с более сложных запросов и понятия не имею, почему это неправильно.
Вы не можете сделать подзапрос в оператор select, который возвращает больше одного поля и не возвращает более одной строки. Ошибка, которую вы видите, заключается в том, что вы выбираете поле 'vehicle_uid', где нет, у вас нет предложения' from', чтобы база данных знала, откуда она взялась. –
Я попытался добавить предложение 'from' в самом конце, которое дало мне' # 1241 - Операнд должен содержать 1 столбец 'error – codemaker
См. Мой ответ. Что-нибудь еще, просто спросите –