我有3张桌子(多对多关系)
我只想创建一个SELECT COUNT查询,这样我就可以得到每个产品的标签数量。即使产品还没有相关的标签。
我已经使用了查询,但如果没有标记,则不会显示该产品。
你有解决方案吗?
编辑(我的实际查询)
SELECT p.name, COUNT(pt.tags_id) as totalP
FROM tags t JOIN product p
LEFT JOIN product_tags pt
ON t.id = pt.tags_id
AND p.id = pt.product_id
编辑II
DROP TABLE IF EXISTS `fonction`;
DROP TABLE IF EXISTS `product`;
DROP TABLE IF EXISTS `fonction_product`;
CREATE TABLE `fonction` (
`id` tinyint(6) UNSIGNED NOT NULL,
`name` varchar(30) NOT NULL,
`reference` varchar(50) NOT NULL
) ;
CREATE TABLE `product` (
`id` tinyint(6) UNSIGNED NOT NULL,
`ref` varchar(30) NOT NULL,
`name` varchar(40) NOT NULL,
`description` varchar(70) NOT NULL,
`col` varchar(20) NOT NULL,
`image` varchar(50) NOT NULL,
`point` tinyint(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `fonction_product` (
`fonction_id` tinyint(6) UNSIGNED NOT NULL,
`product_id` tinyint(6) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `fonction`
ADD PRIMARY KEY (`id`);
ALTER TABLE `product`
ADD PRIMARY KEY (`id`);
ALTER TABLE `fonction_product`
ADD PRIMARY KEY (`fonction_id`,`product_id`),
ADD KEY `product_id` (`product_id`);
INSERT INTO `fonction` (`id`, `name`, `reference`) VALUES (1, 'Contrôleur des accès', 'VLA56'), (2, 'Chauffeur', 'CMA6');
INSERT INTO `fonction_product` (`fonction_id`, `product_id`) VALUES (1, 1);
INSERT INTO `product` (`id`, `ref`, `name`, `description`, `col`, `image`, `point`) VALUES (1, '62475425', 'Pantalon 2 pinces pour Homme', 'Pantalon taille basse à revers pour homme', 'Rouge', '62475425.jpg', 50);
答案 0 :(得分:0)
SELECT p.name, count(pt.tags_id) as total_tags
FROM product p
LEFT JOIN product_tags pt
ON p.id = pt.product_id
GROUP BY p.name