Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос / 6 сообщений из 6, страница 1 из 1
16.02.2005, 17:59
    #32919316
Анонимус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Может что подскажет, как сделать следующее в mysql-4.1

Есть таблица history:

id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
ch_date DATE NOT NULL,
value FLOAT NOT NULL,
reason VARCHAR(50) NOT NULL,
goods_id INTEGER NOT NULL


И таблица товаров, допустим goods. Связывание происходит по goods.id = history.goods_id.

Задача выбрать _одним_ запросом все данные из таблицы goods, вместе с последней датой из таблицы history. Можно ли такое осуществить?
...
Рейтинг: 0 / 0
16.02.2005, 18:06
    #32919336
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT G.name, ....., H.ch_date
FROM doods G, 
   (
   SELECT goods_id, MAX(ch_date) AS ch_date
   FROM history
   GROUP BY goods_id
   )  H
WHERE G.goods_id = H.goods_id
...
Рейтинг: 0 / 0
16.02.2005, 18:28
    #32919391
Анонимус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Что-то вроде этого я уже пытался. Проблема в том, что history содержит данные не для всех позиций из goods. Поэтому надо использовать JOIN. Как его правильно прикрутить сюдя?
...
Рейтинг: 0 / 0
16.02.2005, 18:50
    #32919434
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Где-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT G.id, G.name1, H.date1
FROM hr2.good G
LEFT JOIN
   (SELECT id, MAX(date1) AS date1
    FROM hr2.good_hist
    GROUP BY id
    ) H
ON G.id = H.id    


PS. Хотя в Oracle 9i и ввели такой синтаксис, но на 8 привык к другому, поэтому каждый раз приходится соображать (текст на 8 гораздо лаконичнее)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT G.id, G.name1, H.date1
FROM hr2.good G,
   (SELECT id, MAX(date1) AS date1
    FROM hr2.good_hist
    GROUP BY id
    ) H
WHERE G.id = H.id(+)    
...
Рейтинг: 0 / 0
16.02.2005, 19:08
    #32919466
Анонимус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
О, вот как раз то, что нужно. Огромное спасибо :-)
...
Рейтинг: 0 / 0
18.02.2005, 11:00
    #32922570
Сложный запрос
А вот так?

Код: plaintext
1.
2.
3.
SELECT G.id, G.name1, max(H.date1)
FROM hr2.good G
LEFT JOIN hr2.good_hist H ON G.id = H.id  
GROUP BY G.id
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]