Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2009, 03:12   #1
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию IF - можно ил и как использовать?

SELECT ordersrow.id,cartridges.name as name, ordersrow.typeid, ordersrow.quantity, ordersrow.price FROM ordersrow

есть такой запрос, я хочу чтобы выборка шла cartridges.name as name при условии когда typeid < 10 и если typeid > 10 то выбераем cartridges.name2 as name

можно ли это прямо в mysql запросе сделать?
iankov вне форума Ответить с цитированием
Старый 06.06.2009, 10:28   #2
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

можно, как-то так
Код:
SELECT ordersrow.id,If(ordersrow.typeid<10,cartridges.name,cartridges.name2) as name, ordersrow.typeid, ordersrow.quantity, ordersrow.price FROM ordersrow

Последний раз редактировалось S@fer; 06.06.2009 в 10:35.
S@fer вне форума Ответить с цитированием
Старый 06.06.2009, 10:34   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,085
По умолчанию

Синтаксис:
if (условие, значение_при_истинности_условия, значение_когда_условие_ложно)

Код:
select
  ordersrow.id,
  if (ordersrow.typeid < 10, cartridges.name, cartridges.name2) as name,
  ordersrow.typeid,
  ordersrow.quantity,
  ordersrow.price
from
  ordersrow
Только смотрите какое значение Вам нужно при typeid = 10, а то сейчас это cartridges.name2
pu4koff вне форума Ответить с цитированием
Старый 06.06.2009, 10:41   #4
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

О, все, понял
Спасибо всем =)
iankov вне форума Ответить с цитированием
Старый 07.06.2009, 12:35   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

продолжу вопрощать (для общего развития)
а чой-то в мускуле сделали обертки вокруг оператора case для 2х условий?
soleil@mmc вне форума Ответить с цитированием
Старый 13.06.2009, 12:09   #6
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Код:
SELECT ordersrow.id, CASE (WHEN ordersrow.typeid < 10 THEN cartridges.name WHEN ordersrow.typeid = 10 THEN printers.name WHEN ordersrow.typeid = 20 THEN inksystems.name) as name,ordersrow.typeid,ordersrow.quantity,ordersrow.price FROM ordersrow 
LEFT JOIN cartridges ON cartridges.id = ordersrow.cartridgeid
LEFT JOIN printers ON printers.id = ordersrow.cartridgeid
WHERE ordersrow.parentid = '349'
#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 'WHEN ordersrow.typeid < 10 THEN cartridges.name WHEN ordersrow.typeid = 10 THEN ' at line 1

Что я здесь намудрил? Поправьте пожалуйста )
iankov вне форума Ответить с цитированием
Старый 13.06.2009, 12:13   #7
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

О, все ок, разобрался. Забыл END после кейса и скобки не нужны=)
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Title на форме. Как можно перерисовать caption на form? Или убрать его и вместо использовать картинки Шульц Общие вопросы Delphi 37 02.10.2010 09:46
Sorry, а можно использовать тэги? BaronTreep О форуме и сайтах клуба 27 18.07.2009 13:25
Как сделать чтобы двумерный массив который создается в функции можно было использовать в других функциях Olya90 Помощь студентам 4 20.04.2009 18:39
Можно ли использовать ole в .net? engineslava Общие вопросы .NET 0 09.09.2008 10:59
можно ли так использовать прокси в Webbrouser tigr1991 Работа с сетью в Delphi 1 10.02.2008 20:02