Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Задолбался с запросом. Джойны  [new]
Larvef
Member

Откуда: Germany
Сообщений: 205
Есть 2 таблицы хранящие информацию по топикам и постам форума.
В упрощенном варианте:

Topics                                             Posts

------------------ -----------------------------

topicId | topicName postId | topicId | postDate

Страница с темами выводится так: название темы, дата открытия темы. Дата открытия темы - это дата первого поста в теме. Соответственно делаю SELECT из таблицы Topics и приджойниваю MIN(postDate) из Posts (по topicId). Проблема в том, что если постов больше 1, то выводится больше 1 строки - строки дублируются.

Может ли кто объяснить, что делаю неверно, и что нужно сделать?
Заранее спасибо!
2 май 04, 11:02    [661136]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А group by по топику сделано?
2 май 04, 11:35    [661144]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
select t.TopicName,min(p.postdate) as OpenDate

from topics t inner join posts p
on t.topicId=p.topicId
group by t.TopicName
2 май 04, 14:21    [661202]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
group by t.TopicId
гораздо правильнее. :^)
2 май 04, 14:23    [661204]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Larvef
Member

Откуда: Germany
Сообщений: 205
Владимир Саныч

Да, сделано... правда в реальном запросе фигурирует аж 4 таблицы. Вот реальный запрос (прошу прощение за его громоздкость).

Для наглядности, я приаттачил файл, где можно визуально посмотреть структуру таблиц.

SELECT supportRequests.requestId, supportRequests.requestTitle, supportRequests.requestState, supportRequests.requestUrgency, Min([mDate]) AS mDate, users.uName, users.uSurname, projects.projectName FROM ((projects INNER JOIN users ON projects.projectId = users.uProjectId) INNER JOIN supportRequests ON users.uId = supportRequests.requestFrom) INNER JOIN supportMessages ON supportRequests.requestId = supportMessages.mRequestId WHERE supportRequests.requestState=0 GROUP BY supportRequests.requestId, supportRequests.requestTitle, supportRequests.requestState, supportRequests.requestUrgency,users.uName, users.uSurname, projects.projectName, mDate ORDER by mDate DESC


Спасибо за помощь!

К сообщению приложен файл. Размер - 0Kb
2 май 04, 14:30    [661208]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Ну и кто из них топик? И каковы связи между ними?
2 май 04, 14:42    [661211]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Не вникая в суть запроса ,то что выделено -лишнее
GROUP BY supportRequests.requestId, supportRequests.requestTitle, supportRequests.requestState, supportRequests.requestUrgency,users.uName, users.uSurname, projects.projectName, mDate ORDER by mDate DESC
2 май 04, 15:04    [661218]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Larvef
Member

Откуда: Germany
Сообщений: 205
Владимир Саныч

Прошу прощения, связь-то не указал.

supportRequests.requestId - > supportMessages.mRequestId
supportRequests.requestFrom - > users.uId
users.uProjectId->projects.projectId
2 май 04, 18:24    [661305]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Кто из них топик?
И у каждой связи какая сторона "один", а какая "много"?
2 май 04, 18:33    [661312]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Larvef
Member

Откуда: Germany
Сообщений: 205
Владимир Саныч

Вот для наглядности связи
Топик (из начального примера) - соответственно supportRequests, а посты - supportMessages.

К сообщению приложен файл. Размер - 0Kb
2 май 04, 21:18    [661383]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Ну так в group by все лишнее, кроме полей таблицы топиков.
3 май 04, 11:44    [661523]     Ответить | Цитировать Сообщить модератору
 Re: Задолбался с запросом. Джойны  [new]
Larvef
Member

Откуда: Germany
Сообщений: 205
Спасибо огромное за участие в проблеме!
Удачи!
3 май 04, 14:34    [661624]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить