[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: if ... then ... else ...
aH6y
База данных mysql

Пытаюсь сделать, но почему-то не получается.

Делаю выборку из таблицы 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
Спасибо попробую smile.gif

Спустя 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`

Спустя 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
Большое спасибо smile.gif Получилось smile.gif


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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.