Forum Webscript.Ru

Общие => Базы данных => Тема начата: Greg от 23 Марта 2006, 08:01:46

Название: выбор разных записей
Отправлено: Greg от 23 Марта 2006, 08:01:46
условия: есть таблица, столбцами которой являются:
id, head, text, source_id
нужно вывести 3 записи, в которых значения столбца source_id различны

база Interbase, но думаю можно посмотреть примеры и для других СУБД
Название: выбор разных записей
Отправлено: for_i_0 от 23 Марта 2006, 09:09:36
Greg
Mysql:
SELECT DISTINCT source_id, id, head, text
FROM sometbl
LIMIT 3

вот еще:
SELECT id, head, text, source_id
FROM sometbl
GROUP BY source_id
LIMIT 3
Название: выбор разных записей
Отправлено: Greg от 23 Марта 2006, 09:19:49
for_i_0
да, спасибо, чего-то не сразу дошёл...

теперь такой вопрос, можно ли выудить из таблицы случайные 3 записи?
как вариант рассматривают генерить PHP слуайные ID и по ним уже искать в базе... но полученные ID могут и не существовать (запись удалена и т.д.)

лучше как нибуть бы запросом
Название: выбор разных записей
Отправлено: for_i_0 от 23 Марта 2006, 09:24:06
Greg
пожалуй:
SELECT * FROM table ORDER BY rand() LIMIT 3
Название: выбор разных записей
Отправлено: Greg от 23 Марта 2006, 09:44:53
for_i_0
м-м-м... в Interbase никак не катит
чтож будем извращаться
Название: выбор разных записей
Отправлено: for_i_0 от 23 Марта 2006, 10:00:35
Greg
погоди, успеешь... а так ?
SELECT  * , id *0 + rand(  )  AS chanse
FROM  `table`
ORDER  BY chance
LIMIT 3
Название: выбор разных записей
Отправлено: Greg от 23 Марта 2006, 10:03:24
for_i_0
функция rand вообще в Interbase не определена, похоже, это только в MySQL она есть
Название: выбор разных записей
Отправлено: for_i_0 от 23 Марта 2006, 10:03:35
Greg
и все таки предется поизвращатся :) в обеих случаях используется rand(). Насколько я понял Interbase не поддерживает rand().