Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Cлучайная выборка DISTINCT запросом / 16 сообщений из 16, страница 1 из 1
10.11.2010, 09:37
    #36946291
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
Здравствуйте! Помогите пожалуйста с запросом!
Есть простая таблица вопросов для теста (ID,Text), делаю запрос для получения 5-ти случайных записей, с условием отсутсвия дубликатов в Text
Код: plaintext
SELECT DISTINCT Text FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
Запрос работает отлично, но мне нужно чтобы присудствовал столбец ID в итоге.

в запросе
Код: plaintext
SELECT DISTINCT Text, ID FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
попадаются дубликаты в Text!
...
Рейтинг: 0 / 0
10.11.2010, 14:57
    #36947481
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
а так не пойдет
Код: plaintext
1.
INSERT INTO TargetTable
SELECT DISTINCT * FROM SourceTable
...
Рейтинг: 0 / 0
10.11.2010, 15:05
    #36947509
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
nosov,

Код: plaintext
SELECT DISTINCT * FROM
такой запрос выдает дубликаты в столбце Text, а это не нужно !
...
Рейтинг: 0 / 0
10.11.2010, 15:26
    #36947593
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
elandev,

SELECT DISTINCT -- по стандарту SQL такой запрос должен только уникальные выбирать
...
Рейтинг: 0 / 0
10.11.2010, 15:37
    #36947648
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
nosov,

Должен, но чтото не получается! Для примера таблица TblSimple(ID,Name)
1 Text1
2 Text2
3 Text3
4 Text4
5 Text5
6 Text2
7 Text1
8 Text3

запрос
Код: plaintext
SELECT DISTINCT Name FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
работает когда указываешь конкретное поле

а запрос
Код: plaintext
SELECT DISTINCT * FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
или
Код: plaintext
SELECT DISTINCT Name,ID FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
иногда выбрасывают в поле Name дубликаты!
...
Рейтинг: 0 / 0
10.11.2010, 15:50
    #36947689
_some_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
elandev,

Попробуйте вписать условие:

WHERE ID <> RANDOM()
...
Рейтинг: 0 / 0
10.11.2010, 15:53
    #36947699
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
_some_,

Непомогло!
...
Рейтинг: 0 / 0
10.11.2010, 15:58
    #36947716
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
elandev,

вот статья на эту тему :

http://stackoverflow.com/questions/966176/tsql-select-distinct-on-one-column
...
Рейтинг: 0 / 0
11.11.2010, 09:00
    #36948631
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
nosov,

Те решения, что предлагаются, в моём случае не применимы!
...
Рейтинг: 0 / 0
11.11.2010, 09:19
    #36948651
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
ElandevТе решения, что предлагаются, в моём случае не применимыПочему ?
из-за SQLite ?
на MS SQL Server 2005 или 2008 это работает ???
...
Рейтинг: 0 / 0
11.11.2010, 10:01
    #36948716
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
nosov,

Да я не смог применить для SQlite3 не один из вариантов! Если поможете, буду очень признателен!
...
Рейтинг: 0 / 0
11.11.2010, 10:31
    #36948785
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
Код: plaintext
SELECT DISTINCT Text, ID FROM TblSimple ORDER BY RANDOM() LIMIT  5 ;
И ID какой же из записей с одним и тем же Text должен здесь возвращаться ?
...
Рейтинг: 0 / 0
11.11.2010, 10:49
    #36948826
elandev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
Dmitry Arefiev,

Не пойму вопроса! ID нужен для связи с другой таблицей!
Выше указанная таблица с вопросами, которые могут повторяться, но есть таблица с отве-тами, и на каждый вопрос даже повторяющийся, есть свои ответы.
...
Рейтинг: 0 / 0
11.11.2010, 11:26
    #36948966
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлучайная выборка DISTINCT запросом
2elandev

если тхт1, тхт2, тхт3 ... это тексты вопросов для экзам. билетов
то ваша ай-ди колонка ваще не нужена

дано :
в каждом билете 5 разных вопросов
всего вопросов 400
студентов в группе 20

вспоминаем комбинатортку
вычисляем сколько может быть ваще разных билетов
нам надо не менее 60
ибо студент имеет право тащить билет 3 раза
если надо создаем новые вопросы
все (имхо)

кстати видел в сети простенькую программу
которая сама формирут билеты и печатает их.
...
Рейтинг: 0 / 0
11.11.2010, 11:30
    #36948976
Cлучайная выборка DISTINCT запросом
elandevDmitry Arefiev,

Не пойму вопроса! ID нужен для связи с другой таблицей!
Выше указанная таблица с вопросами, которые могут повторяться, но есть таблица с отве-тами, и на каждый вопрос даже повторяющийся, есть свои ответы.
ЖЕСТЬ! Вопросы одинаковые, - ответы разные.

Код: plaintext
1.
select t.name,(select t2.id from tblsimple t2 where t2.name=t.name limit  1 ) id 
from (select distinct name from tblsimple order by random() limit  5 ) t;
или, чтобы быть уверенным в непредсказуемости результата:
Код: plaintext
1.
select t.name,(select t2.id from tblsimple t2 where t2.name=t.name by random() limit  1 ) id
from (select distinct name from tblsimple order by random() limit  5 ) t;
...
Рейтинг: 0 / 0
11.11.2010, 11:35
    #36948996
Cлучайная выборка DISTINCT запросом
пардон, во втором запросе неточность, - пропустил ключевое слово order
Код: plaintext
1.
select t.name,(select t2.id from tblsimple t2 where t2.name=t.name order by random() limit  1 ) id
from (select distinct name from tblsimple order by random() limit  5 ) t;
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Cлучайная выборка DISTINCT запросом / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]