Пытаюсь сделать, но почему-то не получается.
Делаю выборку из таблицы A, присоеденяю таблицу B. Затем необходимо проверить значение из присоеденённой таблицы B. Если оно NULL, то присоеденить таблицу С, если не NULL, то другую D.
Заранее спасибо за помощь :)
Мой запрос такой:
SELECT users.*, job.*, objects.*
FROM users
LEFT JOIN job ON users.id = job.userid
IF job.obid IS NOT NULL THEN
LEFT JOIN objects ON users.jobl = objects.id ;
ELSE
LEFT JOIN objects ON job.obid = objects.id ;
END IF ;
WHERE users.id = ". $userid
Запрос без конструкции if then else end if работает правильно.
Спустя 16 минут, 11 секунд (24.01.2011 - 20:46) Basili4 написал(а):
if можно использовать только в хранимых процедурах. в запросах используют функцию if ()
Спустя 3 часа, 18 минут, 9 секунд (25.01.2011 - 00:05) aH6y написал(а):
Basili4
Покажи пожалуйста на примере
Покажи пожалуйста на примере
Спустя 23 минуты, 1 секунда (25.01.2011 - 00:28) kirik написал(а):
Спустя 9 часов, 13 минут, 3 секунды (25.01.2011 - 09:41) linker написал(а):
Должно и так работать, на то они и логические условия
SELECT `users`.*, `job`.*, `objects`.* FROM `users`
LEFT JOIN `job` ON `job`.`userid` = `users`.`id`
LEFT JOIN `objects` ON `objects`.`id` = `users`.`jobl` OR `objects`.`id` = `job`.`obid`
WHERE `users`.`id` = ". $userid
Спустя 2 часа, 23 минуты, 38 секунд (25.01.2011 - 12:04) aH6y написал(а):
linker
Спасибо попробую
Спасибо попробую

Спустя 3 часа, 17 секунд (25.01.2011 - 15:05) aH6y написал(а):
Неа не то, что нужно.
Нужно так чтобы если в присоеденяемой таблице joи значение job.userid является NULL, то тогда присоеденяем таблицу objects с таким условием:
LEFT JOIN `objects` ON `objects`.`id` = `users`.`jobl`
в ином случае с таким:
LEFT JOIN `objects` ON `objects`.`id` = `job`.`obid`
Нужно так чтобы если в присоеденяемой таблице joи значение job.userid является NULL, то тогда присоеденяем таблицу objects с таким условием:
LEFT JOIN `objects` ON `objects`.`id` = `users`.`jobl`
в ином случае с таким:
LEFT JOIN `objects` ON `objects`.`id` = `job`.`obid`
Спустя 5 минут, 8 секунд (25.01.2011 - 15:10) linker написал(а):
Я не зря сказал "на то они и логические условия", в данном выражении я подразумевал, что используя OR, AND можно добить именно того, что тебе нужно, нужно только раскинуть мозгами. Ну думай
SELECT `users`.*, `job`.*, `objects`.* FROM `users`
LEFT JOIN `job` ON `job`.`userid` = `users`.`id`
LEFT JOIN `objects` ON (`job`.`userid` IS NULL AND `objects`.`id` = `users`.`jobl`) OR `objects`.`id` = `job`.`obid`
WHERE `users`.`id` = ". $userid
Спустя 6 минут, 2 секунды (25.01.2011 - 15:16) aH6y написал(а):
linker
Большое спасибо
Получилось
Большое спасибо


_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.