Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите составить запрос MySQL


Автор: arial 8.6.2004, 13:00
Есть таблица:

Код
id   pin   data
---------------
1    0     a
2    0     b
3    1     c
4    0     d
5    0     e
6    0     f
7    0     g
...
n    0     n


Есть скрипт постраничного вывода на РНР. Скрипт выдёргивает из таблицы по 10 (к примеру) записей на страницу, при этом запись с pin = 1 в верху каждой страницы. Как составить такой запрос в БД MySQL?

Автор: Akina 8.6.2004, 14:46
делай union select-а с pin=1 и select-а следующих 9 строк

Автор: arial 8.6.2004, 15:03
Я пробовал так:
$sql = ' ( '
. ' SELECT * '
. ' FROM `table` '
. ' ORDER BY `date` DESC, `id` DESC '
. ' WHERE `pin` = 1 '
. ' ) UNION ( '
. ' SELECT * '
. ' FROM `table` '
. ' ORDER BY `date` DESC, `id` DESC '
. ' LIMIT 10, 10'
. ' ) ';
но выводит не 10 (к примеру) записей, а 10 + количество pin записей.

Можно, конечно, скриптом всё сделать, но интересно силами MySQL.

Вот можно было бы сделать типа такого: LIMIT 10, (10 - COUNT(`pin`)), но так, естественно, нельзя.

Автор: Akina 8.6.2004, 16:27
Цитата
можно было бы сделать типа такого: LIMIT 10, (10 - COUNT(`pin`)), но так, естественно, нельзя

не помню, умеет мускул вложенные запросы? если да, то типа

$sql = ' ( '
. ' SELECT * FROM'
. '( SELECT * '
. ' FROM `table` '
. ' ORDER BY `date` DESC, `id` DESC '
. ' WHERE `pin` = 1 '
. ' ) UNION ( '
. ' SELECT * '
. ' FROM `table` '
. ' ORDER BY `date` DESC, `id` DESC '
. ' ) '
. ' ORDER BY pin DESC'
. ' LIMIT 10, 10)';

Автор: arial 8.6.2004, 16:42
К сожалению MySQL не поддерживает вложенные запросы. :-(

Автор: MuToGeN 9.6.2004, 11:57
Цитата
К сожалению MySQL не поддерживает вложенные запросы
...в бесплатной версии

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)