結合された関連テーブルを持つテーブルをデータベースに照会します。例: すべてのスタイルを表示し、そのスタイルと結合ミックスを表示したいが、スタイルに関連するミックスがない場合は 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 を返すにはどうすればよいでしょうか?