UserAleks
Новичок
count с использованием left join
Не могу сообразить, как правильно составить запрос count.
Основная таблица с фирмами - `sto_firma`
CREATE TABLE `sto_firma`
(`firm_id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11),
…
Есть 2 таблицы в которых храним информацию по марке и услугам
CREATE TABLE `sto_makes_firma`
(`mf_id` INT(11) NOT NULL AUTO_INCREMENT,
`firm_id` INT(11),
…
И
CREATE TABLE `sto_uslugi_firma`
(`tf_id` INT(11) NOT NULL AUTO_INCREMENT,
`firm_id` INT(11),
Собственно в чем проблема.
Немигу ни как сообразить как подсчитать совпадения. Точнее сколько фирм отвечают данным условиям.
Вот примерный селект.
SELECT t1.firm_id
FROM `sto_firma` as t1
left join sto_makes_firma as t2 on t1.firm_id = t2.firm_id
left join array_makes as t22 on t2.makes_name = t22.makes_name
left join sto_uslugi_firma as t3 on t1.firm_id = t3.firm_id
left join sto_uslugi t33 on t3.us_id = t33.us_id
WHERE
t1.firm_open='1'
AND t1.sity_zip='90008'
AND ( t2.makes_name='audi' OR t2.makes_name='bmw' )
AND ( t3.us_id='5' OR t3.us_id='8' )
GROUP BY t1.firm_id LIMIT 0,15 ;
Селект осуществляем по 3-ом таблицам, основной и 2-ум зависящим. Тут все ок!
А вот подсчитать сколько фирм не могу. Уже даже не знаю что делать.
Вот примерный селект. Подскажите как или где ошибка.
SELECT t1.firm_id ,COUNT(*)
FROM `sto_firma` as t1
left join sto_makes_firma as t2 on t1.firm_id = t2.firm_id
left join sto_uslugi_firma as t3 on t1.firm_id = t3.firm_id
WHERE
t1.firm_open='1'
AND t1.sity_zip='90008'
AND ( t2.makes_name='audi' OR t2.makes_name='bmw' )
AND ( t3.us_id='5' OR t3.us_id='8'
При таком результате мне выдается на каждый t1.firm_id – сколько совпадений из left join по условию а мне это как бы не очень интересно важнее знать сколько фирм удовлетворяют условию.
Точнее мне нужен результат count(t1.firm_id).
Не могу сообразить, как правильно составить запрос count.
Основная таблица с фирмами - `sto_firma`
CREATE TABLE `sto_firma`
(`firm_id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11),
…
Есть 2 таблицы в которых храним информацию по марке и услугам
CREATE TABLE `sto_makes_firma`
(`mf_id` INT(11) NOT NULL AUTO_INCREMENT,
`firm_id` INT(11),
…
И
CREATE TABLE `sto_uslugi_firma`
(`tf_id` INT(11) NOT NULL AUTO_INCREMENT,
`firm_id` INT(11),
Собственно в чем проблема.
Немигу ни как сообразить как подсчитать совпадения. Точнее сколько фирм отвечают данным условиям.
Вот примерный селект.
SELECT t1.firm_id
FROM `sto_firma` as t1
left join sto_makes_firma as t2 on t1.firm_id = t2.firm_id
left join array_makes as t22 on t2.makes_name = t22.makes_name
left join sto_uslugi_firma as t3 on t1.firm_id = t3.firm_id
left join sto_uslugi t33 on t3.us_id = t33.us_id
WHERE
t1.firm_open='1'
AND t1.sity_zip='90008'
AND ( t2.makes_name='audi' OR t2.makes_name='bmw' )
AND ( t3.us_id='5' OR t3.us_id='8' )
GROUP BY t1.firm_id LIMIT 0,15 ;
Селект осуществляем по 3-ом таблицам, основной и 2-ум зависящим. Тут все ок!
А вот подсчитать сколько фирм не могу. Уже даже не знаю что делать.
Вот примерный селект. Подскажите как или где ошибка.
SELECT t1.firm_id ,COUNT(*)
FROM `sto_firma` as t1
left join sto_makes_firma as t2 on t1.firm_id = t2.firm_id
left join sto_uslugi_firma as t3 on t1.firm_id = t3.firm_id
WHERE
t1.firm_open='1'
AND t1.sity_zip='90008'
AND ( t2.makes_name='audi' OR t2.makes_name='bmw' )
AND ( t3.us_id='5' OR t3.us_id='8'
При таком результате мне выдается на каждый t1.firm_id – сколько совпадений из left join по условию а мне это как бы не очень интересно важнее знать сколько фирм удовлетворяют условию.
Точнее мне нужен результат count(t1.firm_id).