Имеется 2 таблицы.
table1
Необходимо выбрать из таблицы
table2 из группы записей с одинаковым
field2 поле
field1 при таком условии, что
table2.id будет соответствовать
table1.id записи с максимальным значением
time из той самой группы таблицы
table2. Таблицы связаны по
ID.
То есть в этом примере я должен получить на выходе
som1, т.к. мне надо из группы с полем
moloko взять
field1 записи с таким
ID, что в таблице
table1 он будет соответствовать максимальному полю
time этой же группы.
Сложно было объяснить. Надеюсь поймёте.
Спустя 36 минут, 21 секунда (18.06.2009 - 17:08) sergeiss написал(а):
Я тут "помедитировал" немного

и получил вот такой результат. Я его не проверял, но он должен быть рабочий.
Сорри, удалил код, т.к. он не совсем правильный. Сейчас еще подумаю...
Спустя 10 минут, 44 секунды (18.06.2009 - 17:19) sergeiss написал(а):
Вроде как вот так вот:
SQL |
select * from `table2` where `id` = ( select `id` from `table1` where `id` in (select `id` from `table2` where `field2`='moloko') order by `time` desc limit 1 )
|
То есть, сначала находим список АйДи, которые удовлетворяют условию равенства поле2=молоко. Затем находим тот из них, т.е. этих АйДи, к которого максимальное время в первой таблице. Делаем это просто: выводим список АйДи, сортируем по времени (в обратном порядке), и берем первую строчку.
И, наконец, полученный АйДи используем для выборки во второй таблице.
Спустя 38 минут, 22 секунды (18.06.2009 - 17:57) Somoss написал(а):
Спасибо большое за помощь.
Но немного не так поняли суть.
TABLE 1
id time
01 45
02 23
03 14
04 67
05 04
06 15
07 09
TABLE 2
id field1 field2
01 som1 moloko
02 som2 moloko
03 som3 moloko
04 ... smetana
05 ... smetana
06 ... kefir
07 ... kefir
Выделенные жирным элементы связаны. У записей одинаковые ID.
И мне нужно field1 из table2, у которого ID такой же как у записи с максимальным time соответствующей группы.
В данном случае..
В table1 у записи 1 максимальное значение из группы. Поэтому беру field1 у первой записи из table2.
Спустя 37 минут, 50 секунд (18.06.2009 - 18:35) sergeiss написал(а):
Цитата (Somoss @ 18.06.2009 - 18:57) |
Спасибо большое за помощь. Но немного не так поняли суть. |
Я именно так и понял

И я даже создал тестовую БД, где мой запрос великолепно работает.
Спустя 14 часов, 7 минут, 59 секунд (19.06.2009 - 08:43) Somoss написал(а):
Понял. Спасибо ещё раз, сейчас у себя разберусь =)
P.S. работает! супер!