私は、ダイナーとそのお気に入りのフレーバーとデザートを追跡する簡単なアプリケーションを持っています。records
テーブルは単なるダイナーの名前とIDであり、テーブルmid
はデザートとフレーバーを追跡します(ここでも、別の値のテーブルにリンクされたIDによって)。
CREATE TABLE IF NOT EXISTS `records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `records` (`id`, `name`) VALUES
(1, 'Jimmy Jones'),
(2, 'William Henry');
CREATE TABLE IF NOT EXISTS `mid` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`diner` int(11) NOT NULL,
`dessert` int(11) NOT NULL DEFAULT '0',
`flavor` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
INSERT INTO `mid` (`id`, `diner`, `dessert`, `flavor`) VALUES
(1, 1, 3, 0),
(2, 1, 2, 0),
(3, 1, 15, 0),
(4, 1, 0, 1),
(5, 2, 3, 0),
(6, 2, 6, 0),
(7, 2, 0, 4),
(8, 1, 34, 0),
(9, 2, 0, 4),
(10, 2, 0, 22);
単純なクエリである必要があることに少し困惑していrecords
ます。特定のデザートまたはフレーバーの要件が満たされているテーブルからすべてのIDを取得したいと思います。
SELECT a.id
FROM records AS a
JOIN mid AS b ON a.id = b.diner
WHERE b.dessert IN (3,2,6)
AND b.flavor IN (4,22)
where句に一致するレコードがある場合でも、このクエリは行を返しません。明らかな何かが欠けていることは間違いありませJOIN
んが、INNER、OUTER、LEFT、RIGHTを試しましたが成功しませんでした。
誰かが私を正しい軌道に乗せて、私が欠けているものを説明できますか?
ありがとう