Valdemar |
Отправлено: 24.01.2005, 15:33 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Есть две таблицы (MySQL):
CODE |
tema doc_tema
================ ================
tema_id (int) doc_id (int)
tema_name (vchar) tema_id (int)
|
Таблица doc_tema указывает принадлежность документов к темам.
Нужно написать запрос, который вернет названия всех тем с количеством документов по каждой теме. Т.е. в результате запроса должно содержаться ровно столько строк, сколько записей в таблице tema, в независимости от того есть по этой теме документы или нет (в этом случае в поле "Количество документов" должен быть 0) |
|
full_lamer |
Отправлено: 24.01.2005, 15:54 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
можно так
select tema_name, (
select count (*)
from doc_tema
where tema.tema_id = doc_tema.tema_id)
from tema
|
|
AVC |
Отправлено: 24.01.2005, 15:55 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если у вас не проходит вариант из XPortal, то помочь может только левое внешнее объединение. Его MySQL поддерживает? Если нет придется писать процедуру, если да — то так:
(схема, синтаксис Oracle)
Select tema.*, doc.cnt
From
tema t
,(Select tema_id, Count(*) as cnt From doc_tema
Group by tema_id
) doc
Where tema.tema_id = doc.tema_id (+)
Если так не пройдет — создать view для второго подзапроса и объединить их вариантом 1 или 2. |
|
Valdemar |
Отправлено: 24.01.2005, 17:49 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Всем спасибо за содействие. На XPortal мне предложили нужное решение. |
|