Автор Тема: можно ли сделать такую выборку ...  (Прочитано 4191 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли сделать такую выборку ...
« : 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

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
можно ли сделать такую выборку ...
« Ответ #1 : 13 Августа 2004, 18:15:49 »
Jean
ни "х" не понял...
And no religion too...

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
можно ли сделать такую выборку ...
« Ответ #2 : 17 Августа 2004, 08:49:36 »
Абсолютно НЕКОРРЕКТНО поставлен вопрос!!!

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
можно ли сделать такую выборку ...
« Ответ #3 : 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

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
можно ли сделать такую выборку ...
« Ответ #4 : 17 Августа 2004, 10:45:04 »
Цитировать
Jean:
можно ли построить такой запрос

Мне кажется, нет.
Сначала выбери "select `id` where `operation`=\'x\'"
А потом уже для каждого возвращенного id
LJ: Backslashed life (rss)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
можно ли сделать такую выборку ...
« Ответ #5 : 17 Августа 2004, 10:47:52 »
CGVictor

Вообще-то можно, недавно долго спорил с одним знакомым программистом насчет отсутствия вложенных запросов в MySQL, на самом деле, они есть, просто их правильно надо описывать... ;)

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли сделать такую выборку ...
« Ответ #6 : 17 Августа 2004, 11:19:16 »
Phoinix

Спасибо, работает

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
можно ли сделать такую выборку ...
« Ответ #7 : 17 Августа 2004, 11:53:10 »
Phoinix
А со скоростью у них как?
Мне проще в несколько. Понятнее. ИМХО.
LJ: Backslashed life (rss)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
можно ли сделать такую выборку ...
« Ответ #8 : 17 Августа 2004, 12:45:46 »
CGVictor

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


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

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


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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28