Как посчитать количество записей из дополнительной таблицы?
Есть запрос
$get = mysql_query("
SELECT
*
FROM
values_to_products
LEFT JOIN values ON (value_id = vtp_value_id)
WHERE
vtp_products_id IN (".implode(',', $pIds).")
".((!empty($ids)) ? " AND vtp_value_id IN (".implode(',', $ids).") " : "")."
ORDER BY
value_id
");
Мне нужно посчитать сколько products_id из другой таблицы products у которых vtp_value_id = products_value_id и добавить в результат выборки этого запроса как products_count
Я пробовал так. Если делать дополнительно "count(products_id) as products_count", и добавить "GROUP BY vtp_value_id", то считает(!), но результат выборки не тот выходит какой нужен.
Вернуть должно все из таблиц, где могут повторяться vtp_value_id.
Как тут быть? Дополнительный запрос не пойдет, так как итак при в этой части кода делается три запроса.
вынесено из комментариев.
SQL Fiddle
MySQL 5.5 Schema Setup:
drop table if exists `values`;
create table `values` (
`value_id` int(10) null default null,
`value_name` varchar(255)
);
drop table if exists `values_to_products`;
create table `values_to_products` (
`vtp_products_id` int(10) null default null,
`vtp_value_id` int(10) null default null
);
drop table if exists `products`;
create table `products` (
`products_id` int(10) null default null,
`products_value_id` int(10) null default null
);
insert into `values` (`value_id`, `value_name`) values
(1,'name 1'), (2, 'name 2'), (3, 'name 3'), (4, 'name 4');
insert into `values_to_products` (`vtp_products_id`, `vtp_value_id`) values
(1, 1), (2, 1), (3, 2), (4, 3), (5, 1), (1, 2);
insert into `products` values
(1, 1), (2, 1), (3, 2), (4, 2), (5, 1);
Query 1:
SELECT
vp.*, v.*, count(p.products_id)
FROM
values_to_products AS vp
LEFT JOIN `values` AS v ON (v.value_id = vp.vtp_value_id)
LEFT JOIN `products` AS p ON (p.products_value_id = vp.vtp_value_id)
WHERE
vp.vtp_products_id IN (1,2,3,4) AND
vp.vtp_value_id IN (1,2,3,4,1)
GROUP BY vp.vtp_value_id, vp.vtp_products_id
ORDER BY
v.value_id
Results:
| vtp_products_id | vtp_value_id | value_id | value_name | count(p.products_id) |
|-----------------|--------------|----------|------------|----------------------|
| 1 | 1 | 1 | name 1 | 3 |
| 2 | 1 | 1 | name 1 | 3 |
| 3 | 2 | 2 | name 2 | 2 |
| 1 | 2 | 2 | name 2 | 2 |
| 4 | 3 | 3 | name 3 | 0 |
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно вывести данные из разных таблиц на одну страницуПри чем из одной таблицы все благополучно выводится