Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: count() из 2 связанных таблиц Добавлено: 24.05.10 19:12  

Автор вопроса:  Самат
Есть две связанные таблицы. Как взять данные из первой таблицы и количество "детей" к каждой ее строке из второй таблицы?

Пробовал так:
SELECT table1.title, count(table2.id) AS child_count FROM table1 INNER JOIN table2 ON table1.id = table2.parent_id GROUP BY table2.id, table1.title

Но это не подходит, так как если в table2 нет сторк, связанных с table1, то в результате я не получаю child_count со значением 0.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 24.05.10 23:14
left join?

Ответить

Номер ответа: 2
Автор ответа:
 Самат



Вопросов: 10
Ответов: 17
 Профиль | | #2 Добавлено: 25.05.10 09:44
Спасибо, попробывал. Но тогда некорректно работает count(). Выводит таблицу, в которой повторяется поле table1.title, a поле child_count у каждой строки либо 0 либо 1.

Чтобы было понятней, запрос

SELECT table1.title, count(table2.id) AS child_count
FROM table1 LEFT JOIN table2 ON table2.parentId = table1.id
GROUP BY table2.id, table1.title;

выводит:
вася, 1;
вася, 1;
вася, 1;
петя, 1;
петя, 1;
маша, 0.

А должен выводить:
вася, 3;
петя, 2;
маша, 0.

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 25.05.10 14:30
У меня работает
  1. select ltitles.title,count(lchildren.id) from ltitles left join lchildren on ltitles.id = lchildren.pid group by ltitles.id

Ответить

Номер ответа: 4
Автор ответа:
 Самат



Вопросов: 10
Ответов: 17
 Профиль | | #4 Добавлено: 27.05.10 11:44
спасибо! теперь у меня тоже работает )
Надо было убрать table1.title из запроса.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам