![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос последней связи [MySQL]
Дмитрий С © (2010-01-20 08:16:00)Есть таблицы
`auto` - столбцы: `id`, `number` (автомобили)
`client` - столбцы: `id`, `name`
И связывающая их таблица заказов:
`order` - столбцы `id`, `auto_id`, `client_id`, `create_time`
Для одного и того же автомобиля может быть сколько угодно заказов как от одного так и от нескольких клиентов.
Нужно получить список автомобилей и присоединить Имя последнего заказчика.
Пока у меня несколько вариантов, которые меня не устраивают:
1. Добавить в таблицу `auto` поле, где кешировать `client`.`id` последнего клиента. - не удобно поддерживать данное поле.
2. Добавить в простой запрос из таблицы `auto` вложенный запрос - может быть очень медленно.
А как сделать присоединением JOIN я пока не могу представить.
Ваши предложения?
БД: MySQL
Вариант (2010-01-20 08:51:00) [21]Если правильно понял, то примерно так (выборка полей от фонаря, поставь сам нужные) - выбираться должны авто имеющие заказы и последний клиент сделавший заказ на авто
select a.number,c.name,o.id
from auto a
inner join orders o
--(не нравится мне название order)
ON o.auto_id=a.id
inner join client c on c.id=o.client.id
where o.create_time=(select MAX(o1.create_time) from orders o1 where o1.auto_id=a.id)
PS: Запрос не проверял, написал навскидку.