Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Синтаксис if
 
 автор: Atom   (11.09.2005 в 00:48)   письмо автору
 
 

Подскажите пожалуйста синтаксис оператора if в mysql. Я просто не уверен даже, есть ли он. Кажется где-то краем глаза видел, но где не помню. Поэтому и в чем искать не знаю. А поисковик слово if брать не хочет :(

   
 
 автор: Ziq   (11.09.2005 в 07:07)   письмо автору
 
   для: Atom   (11.09.2005 в 00:48)
 

Честно говоря, только вчера начал учить серьезно MySQL, так что возможны неточности.
Функция IF() имеет следующую конструкцию

IF(условие,если true, если false)

К примеру в книге Поля Дюбуа был такой пример:

SELECT last_name,first_name, death FROM president
ORDER BY IF(death IS NULL,1,0), death

Этот запрос выведет мертвых первее живых. И, причем, никак иначе сделать нельзя, так как с MySQL 3.23.2 поля со значением NULL выводяться первыми в независимости от типа сортировки.

   
 
 автор: cheops   (11.09.2005 в 12:56)   письмо автору
 
   для: Ziq   (11.09.2005 в 07:07)
 

Да это функция IF() имеет именно такой синтаксис - её использование достаточно специфично и немного отличается от принятного в других языках программирования. Кроме этого имеется оператор IF, который используется в хранимых процедурах, но он доступен только начиная с MySQL 5.0.1.

   
 
 автор: Atom   (11.09.2005 в 13:53)   письмо автору
 
   для: cheops   (11.09.2005 в 12:56)
 

Что-то не очень разобрался.

SELECT r_info.*, r_clients.company AS company FROM r_info, r_clients WHERE IF(r_info.client_id!=0, r_info.client_id=r_clients.client_id, 0)

Тоесть мне нужно из таблицы r_info достать значение client_id, сравнить его со значением client_id в r_clients и из r_clients получить company соответствующее client_id. Но если client_id в r_info равно 0, то сравнивать ничего не надо. И company не нужна. Конечно, можно в два запроса, но хочется элегантно все сделать :)

   
 
 автор: Atom   (11.09.2005 в 14:07)   письмо автору
 
   для: Atom   (11.09.2005 в 13:53)
 

Решил сделать в два запроса. Ибо нефиг :))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования