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

Форум MySQL

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

 

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

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

тема: Запрос с "подусловием"
 
 автор: ddhvvn   (21.10.2008 в 18:36)   письмо автору
 
 

Всем привет!

Блин, не знаю даже как лучше описать задачу...
Нужно сделать запрос с проверкой по различным полям в зависимости от значения одного поля =)

Т.е.
есть допустим такая таблица
id # flag # param1 # param2 # param3

Вот если flag=0, то должен быть такой запрос
SELECT from table_name WHERE param1<param3

А если flag=1, то такой
SELECT from table_name WHERE param2<param3


Как это реализовать в 1 запросе?

  Ответить  
 
 автор: Trianon   (21.10.2008 в 20:01)   письмо автору
 
   для: ddhvvn   (21.10.2008 в 18:36)
 

SELECT from table_name WHERE IF(flag, param2, param1 ) < param3

  Ответить  
 
 автор: ddhvvn   (21.10.2008 в 21:02)   письмо автору
 
   для: Trianon   (21.10.2008 в 20:01)
 

Спасибо! Как все просто ))
Блин, надо уже плотно заняться изучением mysql...

добавлено
тут еще 1 "затруднение", но на порядок сложнее (по крайней мере для меня).
Трианон, пожалуйста, выручайте! )))

Есть таблица можно сказать такая же, как в 1 посте
id_parent # id_child # flag2 # другие поля

и есть еще 1 таблица (как в 1 посте)
id_child # flag # param1 # param2 # param3 # другие поля не имеют значения

И есть третья таблица
id_child # param1 # param2 # другие поля 

Вторая и третья таблицы зависит от первой.
Нужно вытащить рандомно 1 строку из первой таблицы, по условию ко второй или третьей таблице.

Из первой таблицы рандомно должна быть выбрана строка (если конечно таковая имеется), которая удовлетворяет следующим условиям:
если flag=0
-во второй таблице должно быть
если flag=0, param1<=param3
если flag=1, param2<=param3
если flag=1
-из третьей таблицы, где param1<=param2

p.S.: надеюсь понятно объяснил))
P.P.S.: изменить структуру БД сейчас, к сожалению, нельзя!

  Ответить  
 
 автор: Trianon   (21.10.2008 в 21:28)   письмо автору
 
   для: ddhvvn   (21.10.2008 в 21:02)
 

таблицы связаны как-нибудь?

  Ответить  
 
 автор: ddhvvn   (21.10.2008 в 22:06)   письмо автору
 
   для: Trianon   (21.10.2008 в 21:28)
 

ну по id_child

  Ответить  
 
 автор: Trianon   (21.10.2008 в 22:09)   письмо автору
 
   для: ddhvvn   (21.10.2008 в 22:06)
 

ну вот я не должен об этом догадываться.

SELECT t1.* 
FROM table1 AS t1 
  LEFT JOIN table2 AS t2 ON t1.id_child = t2.id_child 
  LEFT JOIN table3 AS t3 ON t1.id_child = t3.id_child 
WHERE IF(t1.flag2=0,  и т.д.

>p.S.: надеюсь понятно объяснил))
не надейтесь. Совершенно непонятно.

  Ответить  
 
 автор: ddhvvn   (21.10.2008 в 22:23)   письмо автору
 
   для: Trianon   (21.10.2008 в 22:09)
 

Наугад писали? =)
или мысли "скачали" )))

сейчас попробую...

  Ответить  
 
 автор: ddhvvn   (22.10.2008 в 10:45)   письмо автору
 
   для: Trianon   (21.10.2008 в 22:09)
 

Все! Вроде разобрался =)

  Ответить  
Rambler's Top100
вверх

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