Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
22.03.2002, 09:21
|
|||
---|---|---|---|
Выбор из главной и дочерей таблицы |
|||
#18+
Есть две таблицы. create table block ( id bigint, name char(10) ); create table subblock ( blockid bigint name char(10) ); Соответственно subblock.blockid ссылается на block.id Обе таблицы заполнены но не на каждый block есть subblock. И в block может быть более одного subblock. Цель: выбрать таблицу следующего вида block.id, number_of_subblocks где number_of_subblocks это количество subblocks ссылающихся на это block.id SELECT bl.id, count(*) as number_of_subblocks FROM block bl, subblock sb WHERE sb.blockid=bl.id GROUP BY sb.blockid Все-бы хорошо, но при таком запросе вообще нет ни одной записи по тем block в которых нет subblock а в этом случае надо выводить 0 (ноль). Пробовал с JOIN и запутался окончательно получались все варианты кроме нужного. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.03.2002, 10:34
|
|||
---|---|---|---|
Выбор из главной и дочерей таблицы |
|||
#18+
Всем спасибо вроде разобрался! Получилось вот так. SELECT bl.id, SUM(CASE WHEN sb.id IS NULL THEN 0 ELSE 1 END) AS SB_COUNT, SUM(CASE WHEN dc.blockid IS NULL THEN 0 ELSE 1 END) AS MSG_COUNT FROM block AS bl LEFT JOIN block AS sb ON bl.id=sb.parentid LEFT JOIN docs AS dc ON bl.id=dc.blockid GROUP BY bl.id Самое странное не захотел работать NULLIF !? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&tablet=1&tid=1856388]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 484ms |
0 / 0 |