Forum Webscript.Ru
Общие => Базы данных => Тема начата: 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
спасибо.
-
Jean
ни "х" не понял...
-
Абсолютно НЕКОРРЕКТНО поставлен вопрос!!!
-
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
-
Jean:
можно ли построить такой запрос
Мне кажется, нет.
Сначала выбери "select `id` where `operation`=\'x\'"
А потом уже для каждого возвращенного id
-
CGVictor
Вообще-то можно, недавно долго спорил с одним знакомым программистом насчет отсутствия вложенных запросов в MySQL, на самом деле, они есть, просто их правильно надо описывать... ;)
-
Phoinix
Спасибо, работает
-
Phoinix
А со скоростью у них как?
Мне проще в несколько. Понятнее. ИМХО.
-
CGVictor
А со скоростью у них как?
Особо тормозов не наблюдал (обычных запрос выборки из 2-х таблиц), тем более нужно меньше данных гонять между запросами...
Мне проще в несколько. Понятнее.
Все зависит от привычки, а тоже часто во время отладки делаю несколько запросов, потом объединяю в один...