我在我的数据库中查询一个带有连接相关表的表示例:我想显示所有样式并加入该样式的混合,但如果第一个样式没有混合相关,则显示 0 个混合。
这是我的 2 张桌子:
首先是混合表
CREATE TABLE `mixes` (
`mixes_id` int(11) NOT NULL AUTO_INCREMENT,
`datePublic` date DEFAULT NULL ,
`timeLenght` time DEFAULT NULL ,
`Title` varchar(255) DEFAULT 'No-Title-Yet' ,
`dwnlSize` varchar(45) DEFAULT '? MegaBytes',
`Quality` char(10) DEFAULT '? kbits/s',
`style_id` int(3) unsigned zerofill DEFAULT NULL,
`collection_id` int(3) unsigned zerofill DEFAULT '001',
`lienDwnld` varchar(255) DEFAULT NULL,
`VidLink` varchar(255) DEFAULT NULL,
`ArtisteFeat` varchar(255) DEFAULT NULL,
`slugMixTitle` varchar(100) DEFAULT NULL,
`cache` enum('0','1') DEFAULT NULL,
PRIMARY KEY (`mixes_id`),
UNIQUE KEY `Title_UNIQUE` (`Title`),
UNIQUE KEY `lienDwnld_UNIQUE` (`lienDwnld`),
UNIQUE KEY `slugMixTitle` (`slugMixTitle`),
KEY `style_index` (`style_id`),
KEY `collection_index` (`collection_id`)
)
ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
ALTER TABLE `mixes`
ADD CONSTRAINT `collectionMustExist` FOREIGN KEY (`collection_id`) REFERENCES `collection` (`collection_id`),
ADD CONSTRAINT `styleMustExist` FOREIGN KEY (`style_id`) REFERENCES `style` (`style_id`);
然后是样式表
CREATE TABLE `style` (
`style_id` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT,
`imgMixCat` varchar(255) DEFAULT NULL,
`nameMixCat` varchar(45) DEFAULT NULL,
`descMixCat` varchar(255) DEFAULT NULL,
`slugMixCat` varchar(45) DEFAULT NULL,
`hideMixCat` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`style_id`),
UNIQUE KEY `nameMixCat_UNIQUE` (`nameMixCat`),
UNIQUE KEY `slugMixCat` (`slugMixCat`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
这是我当前的查询:
SELECT
count(style.style_id) AS count,
nameMixCat,
style.style_id,
descMixCat,
hideMixCat,
slugMixCat,
imgMixCat
FROM style as style
LEFT JOIN mixes as mixes ON style.style_id = mixes.style_id
GROUP BY style.style_id
ORDER BY style.style_id ASC
那么当没有与风格相关的混音时,如何返回 1 呢?