Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Объединение трех запросов для LIMIT
Форумы портала PHP.SU » » Работа с СУБД » Объединение трех запросов для LIMIT

Страниц (1): [1]
 

1. Silver Soft - 14 Ноября, 2013 - 10:03:17 - перейти к сообщению
Доброго времени суток!

Возник вопрос:

есть три запроса (для примера):
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM b_user WHERE NAME like '$name%'";
  2. $query = "SELECT * FROM b_user WHERE LAST_NAME like '$name%'";
  3. $query = "SELECT * FROM b_user WHERE concat(NAME,' ',LAST_NAME) like '%$name%'";
  4.  

понятно, что каждый из них возвращает разный результат, вопрос в том как можно их объединить (например join), чтобы потом можно было применить LIMIT $page, $limit ?

не хотелось бы все результаты собирать в массив и там уже выдерать нужный диапазон...
да и кеширование результата во временную таблицу тоже не подходит...

вопрос, есть ли решение данное задачи или я уже все возможные варианты отмел? )))

Заранее благодарен!!
2. imya - 14 Ноября, 2013 - 10:35:37 - перейти к сообщению
Используйте UNION
3. Silver Soft - 14 Ноября, 2013 - 10:55:24 - перейти к сообщению
эм.. и как потом ко всем union применить LIMIT? насколько я знаю, то там прокатит только такое:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM b_user WHERE NAME like '$name%' LIMIT 0, 10 UNION
  2. SELECT * FROM b_user WHERE LAST_NAME like '$name%' LIMIT 0, 10 UNION
  3. SELECT * FROM b_user WHERE concat(NAME,' ',LAST_NAME) like '%$name%' LIMIT 0, 10";

а как общий поставить? или я чего-то не догоняю)
4. Мелкий - 14 Ноября, 2013 - 11:19:16 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM (
  2. ... UNION ALL ..
  3. ) LIMIT 10

В общем случае. В вашем - вы же из одной таблицы читаете, where только различается! Объедините все 3 селекта в один.
5. Silver Soft - 14 Ноября, 2013 - 12:52:31 - перейти к сообщению
Мелкий, спасибо)

Все получилось, тему можно закрывать)

 

Powered by ExBB FM 1.0 RC1