Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2013, 02:34   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Восклицание Работа с двумя таблицами

Здравствуйте

Столкнулся с проблемой такого рода:
У меня есть 2-е таблицы.
1. Статьи.
2. Комментарии.

Мне нужно получить все записи с 1-й таблицы "Статьи" и получить к каждой из записей количество комментариев со второй таблицы "Комментарии".

Пример того что должно получиться в итоге:
______________________________
| id | title | text | count(comment) |
|....|.......|........|............ ............|

Пробовал это реализовать через LEFT OUTER JOIN:

Код:
SELECT blog.*, count(blog_comment.id) FROM blog LEFT OUTER JOIN blog_comment ON blog_comment.blog_id = blog.id
Оно выводит только ту запись к которой есть комменты, а все остальные нет. А мне нужно чтобы выводило все но там где нет комментов count = 0.

Подскажите пожалуйста как это реализовать???
Заранее очень благодарен.
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности

Последний раз редактировалось SoftKoc; 02.04.2013 в 02:36.
SoftKoc вне форума Ответить с цитированием
Старый 02.04.2013, 07:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT blog.*,
    (select count(blog_comment.id)  FROM blog_comment WHERE blog_comment.blog_id = blog.id) AS CountCom
  FROM blog
Хотя и с
Код:
LEFT JOIN blog_comment ON blog_comment.blog_id = blog.id
должно вывести все записи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.04.2013 в 07:45.
Аватар вне форума Ответить с цитированием
Старый 02.04.2013, 18:32   #3
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
SELECT blog.*,
    (select count(blog_comment.id)  FROM blog_comment WHERE blog_comment.blog_id = blog.id) AS CountCom
  FROM blog
Хотя и с
Код:
LEFT JOIN blog_comment ON blog_comment.blog_id = blog.id
должно вывести все записи
Огромное спасибо, работает +

Я вот тоже думал что с
Код:
LEFT JOIN blog_comment ON
выведет.
Но выводит только первую запись в которой суммирует количество комментариев "точнее всех записей таблицы Комментарии".
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 02.04.2013, 19:06   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Но выводит только первую запись
Это точно. Только обратил внимание, что там GROUP BY нет. Но если бы и был, в нем пришлось бы все поля таблицы blog перечислить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с двумя таблицами egle Microsoft Office Excel 0 28.03.2013 16:33
Связь между двумя таблицами Yanaso91 Microsoft Office Access 5 21.06.2011 22:54
Форма для работы с двумя таблицами scofieldsj Microsoft Office Access 1 06.12.2009 15:13
Связь между двумя таблицами. megaten Microsoft Office Access 5 17.05.2009 14:17
Работа с TDBCtrlGrid и двумя таблицами из БД kiber0net0 БД в Delphi 4 02.10.2008 00:10