Forum Webscript.Ru

Общие => Базы данных => Тема начата: Jean от 13 Августа 2004, 07:43:22

Название: можно ли сделать такую выборку ...
Отправлено: Jean от 13 Августа 2004, 07:43:22
можно ли сделать такую выборку на MySQL? ...

create table test
(
id int,
operation int
);

забита такими  значениями:
1, 1
1, 2
1, 3
2, 4
2, 5
2, 6
1, 7
2, 8
1, 8

можно ли построить такой запрос, который по номеру операции вытаскивает объект с таким же id, но с операцией предыдущей.

пример

operation = 8
результат:
2, 6
1, 7

operation = 7
результат:
1, 3

спасибо.
Название: можно ли сделать такую выборку ...
Отправлено: commander от 13 Августа 2004, 18:15:49
Jean
ни "х" не понял...
Название: можно ли сделать такую выборку ...
Отправлено: FANTAzeRus от 17 Августа 2004, 08:49:36
Абсолютно НЕКОРРЕКТНО поставлен вопрос!!!
Название: можно ли сделать такую выборку ...
Отправлено: Phoinix от 17 Августа 2004, 10:43:27
Jean
Вообще-то странное условие, но...

SELECT t1.id, MAX(t1.operation)
FROM test AS t1, test AS t2
WHERE t2.operation = \'8\' AND t1.id = t2.id AND t1.operation < t2.operation
GROUP BY t1.id
Название: можно ли сделать такую выборку ...
Отправлено: CGVictor от 17 Августа 2004, 10:45:04
Цитировать
Jean:
можно ли построить такой запрос

Мне кажется, нет.
Сначала выбери "select `id` where `operation`=\'x\'"
А потом уже для каждого возвращенного id
Название: можно ли сделать такую выборку ...
Отправлено: Phoinix от 17 Августа 2004, 10:47:52
CGVictor

Вообще-то можно, недавно долго спорил с одним знакомым программистом насчет отсутствия вложенных запросов в MySQL, на самом деле, они есть, просто их правильно надо описывать... ;)
Название: можно ли сделать такую выборку ...
Отправлено: Jean от 17 Августа 2004, 11:19:16
Phoinix

Спасибо, работает
Название: можно ли сделать такую выборку ...
Отправлено: CGVictor от 17 Августа 2004, 11:53:10
Phoinix
А со скоростью у них как?
Мне проще в несколько. Понятнее. ИМХО.
Название: можно ли сделать такую выборку ...
Отправлено: Phoinix от 17 Августа 2004, 12:45:46
CGVictor

Цитировать
А со скоростью у них как?


Особо тормозов не наблюдал (обычных запрос выборки из 2-х таблиц), тем более нужно меньше данных гонять между запросами...

Цитировать
Мне проще в несколько. Понятнее.


Все зависит от привычки, а тоже часто во время отладки делаю несколько запросов, потом объединяю в один...