нужна помощь с запросом select count из нескольких таблиц

Marquis

Новичок
нужна помощь с запросом select count из нескольких таблиц

Есть запрос:

SELECT
COUNT(t2.site_field_id) AS site_fields,
COUNT(t3.object_id) AS object
FROM
site t1
LEFT OUTER JOIN site_fields t2 ON (t1.site_id = t2.site_field_id)
LEFT OUTER JOIN object t3 ON (t1.site_id = t3.object_id)
WHERE (t1.site_id = 1)

не удается написать его правильно т.к. мне нужно получить количество записей из таблиц 'site_fields' и 'object' у которых 'site_id' = 't1.site_id'
сейчас же в результате запроса получаю ответ либо 0 либо 1 т.е. получаю не количесво строк а "маркер" указывающий на то, есть или нет записей.
 

Найч

Алгоритмик :-)
Проще выполнить два запроса
[sql]SELECT COUNT(id) from t2 where site_field_id = 1;
SELECT COUNT(id) from t3 where object_id = 1
[/sql]
 

Marquis

Новичок
Найч
Ну и нафига мне нужен второй запрос когда подобный функционал реализуется с помощью одного запроса?

Кстати, прочитал что рекомендуеца использовать COUNT(*) вместо COUNT(id) тогда еще один вопросик, как правельно заменить "COUNT(t2.site_field_id) AS site_fields" на COUNT(*) при замене у меня в результате вылезает ошибка синтаксиса.
 

Wicked

Новичок
Marquis
Не нужно переходить границы и пихать всё и вся в один запрос. Будь проще.
 

Marquis

Новичок
Wicked
возможно ты и прав, но все же хочется понять где у меня в запросе ошибка и почему я не могу получить нужного результата.
 

dr-sm

Новичок
Автор оригинала: Marquis ...но все же хочется понять где у меня в запросе ошибка и почему я не могу получить нужного результата.
для этого тебе нужно разобратся с двумя вещами:

1. что такое join, и как он работает.
2. что такое агрегатные функции, и как они работают.

тогда, возможно, у тебя получится сделать то что ты хочешь одним запросом.
и ты поймешь почему это нужно сделать двумя...
 
Сверху