Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите запрос / 5 сообщений из 5, страница 1 из 1
15.11.2009, 09:43
    #36311097
raster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите запрос
Давно мучаюсь.

Суть такая, 3 таблицы:
A: id_a, name
B: id_b, id_a, name
C: id_c, id_b, name

Соответственно отношение один ко многим (одной записи в таблице A соответствует одна или несколько в B, одной записи в таблице B соответствует одна или несколько в C)

Что надо:
Запрос, который выведет A.id_a, A.name и соответствубщее им кол-во записей в B и C
...
Рейтинг: 0 / 0
15.11.2009, 10:10
    #36311106
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите запрос
Наверное это не лучший вариант, зато голова не требуется
Код: plaintext
1.
2.
3.
select id_a, name_a,
  (select count(*) from B where A.id_a=B.id_A) as CountB
  (select count(*) from C,B where A.id_a=B.id_A and B.id_b=C.id_B) as CountC
from A
...
Рейтинг: 0 / 0
16.11.2009, 00:11
    #36311563
Naf2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите запрос
rasterДавно мучаюсь.

Суть такая, 3 таблицы:
A: id_a, name
B: id_b, id_a, name
C: id_c, id_b, name

Соответственно отношение один ко многим (одной записи в таблице A соответствует одна или несколько в B, одной записи в таблице B соответствует одна или несколько в C)

Что надо:
Запрос, который выведет A.id_a, A.name и соответствубщее им кол-во записей в B и C
Код: plaintext
1.
2.
3.
select A.id_a, A.name, count(id_b) cb, count(id_c) cc
from A 
left join B on (A.id_a=B.id_a)
left join C on (B.id_b=B.id_b)
...
Рейтинг: 0 / 0
17.11.2009, 09:08
    #36313958
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите запрос
это неверно. будет 2 одинаковых счетчика
...
Рейтинг: 0 / 0
17.11.2009, 09:18
    #36313974
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите запрос
muk07это неверно. будет 2 одинаковых счетчика
Код: plaintext
1.
2.
3.
4.
select A.id_a, A.name, count(distinct id_b) cb, count(distinct id_c) cc
from A 
left join B on (A.id_a=B.id_a)
left join C on (B.id_b=С.id_b)
group by A.id_a, A.name
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите запрос / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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