** avtoritet |
Отправлено: 11.11.2005, 05:07 |
|
Не зарегистрирован
|
Почти нечерта не шарю в sql, а запрос нужно составить обязательно. Помоите кто может! Заранее благодарен.
Вообщем надо следущее.
Иеем две таблицы:
1) chel (id autoincrement primary fey, fio char 100)
2) result(id int, sum int, datein datetime)
- поле id — этл ключевое поле, связывающее две таблицы.
Надо получить все из первой таблицы (это не проблема) , при этом подчинить вторую по ключевому полю. Это у меня получается. Но надо сделать так, чтобы в случае, если на одну запись из первой таблицы имеется во второй 2,3, ... записи, выбрать максмимальную из них по дате.
Еще раз, спасибо! |
|
AVC |
Отправлено: 11.11.2005, 11:22 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
КАКОЙ СЕРВЕР???
Типа так
Вариант для случай, когда у каждой родительской записи обязательно есть дочерние и у них пары ID,DateIn уникальны
CODE |
Select *
From
T0
,T1
,( Select ID, Max (DateIn) as MDateIn
From t1
Group by ID
) t2
Where 1 = 1
and t1.ID = t2.ID
and t1.DateIn = t2.MDateIn
and t0.ID = t1.ID
|
Для случаев, когда у родительской нет дочерниих или есть несколько с одинаковыми DateIn запрос надо слегка переделать. |
|
** avtoritet |
Отправлено: 11.11.2005, 20:14 |
|
Не зарегистрирован
|
Сервер mysql!
AVT, я не улавливаю суть в твоем запросе, просто я в sql как свинья в живописи.
Предположим это перва ятаблица:
----------------
id | fio |
----------------
1 | Pushkin
2 | Ivanov
3 | Petrov
----------------
А это вторая:
---------------------------------------
id | sum | datein |
---------------------------------------
1 | 150 | 11/11/05 4: 05 |
1 | 120 | 11/11/05 4:45 |
3 | 100 | 11/11/o5 19:10 |
---------------------------------------
А получить в итоге надо следущее:
-------------------------------------------------------------
id | fio | sum | datein |
-------------------------------------------------------------
1 | Pushkin| 120 |11/11/05 4:45 |
3 | Petrov | 100 |11/11/05 19:10 |
-------------------------------------------------------------
Всем спасибо!
|
|
AVC |
Отправлено: 14.11.2005, 15:43 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (** avtoritet @ 11/11/2005, 19:14) | Сервер mysql!
AVT, я не улавливаю суть в твоем запросе
|
Мой ник пишется иначе.
Запрос решает проблемму именно в вашей постановке и делает он это так:
Подзапрос T2 находит для каждого ID максимальную дату.
Затем из T1 выбираются те строки, которые попали в T2 (разворачивается информация по нужным записям)
И наконец результат дополняется информацией из T0.
Вот вариант, проверенный на mysql
CODE |
Select
t0.*
,t1.*
From
T0
,T1
,( Select t1.ID, max(t1.DateIn) as MDateIn
From t1
Group by t1.ID
) t2
Where 1 = 1
and t1.ID = t2.ID
and t1.DateIn = t2.MDateIn
and t0.ID = t1.ID
| |
|
** avtoritet |
Отправлено: 14.11.2005, 17:42 |
|
Не зарегистрирован
|
извиняюсь AVC, попутал немного!
Вот теперь, после твоего пояснения, понял что к чему. Спасибо! |
|
|