これに見えるテーブルt1があり、レコードがアイテム、サイズ、および日付の組み合わせで一意である場合。
item size date
1234 S 2013-02-11
1234 M 2013-02-11
1234 L 2013-02-11
9999 S 2013-02-11
9999 M 2013-02-11
9999 L 2013-02-11
1234 S 2013-02-13
1234 M 2013-02-13
1234 L 2013-02-13
9999 S 2013-02-13
9999 M 2013-02-13
2013-02-11と比較して2013-02-13から欠落しているアイテムとサイズを取得するにはどうすればよいですか?
私が探しているリターンは、
item size
9999 L
私が試してみました;
SELECT ta.item,
ta.size
FROM t1 ta
LEFT JOIN t1 tb
ON ta.item = tb.item
AND ta.size = tb.size
WHERE ta.date = '2013-02-11'
AND tb.date = '2013-02-13'
AND tb.size IS NULL
と
SELECT item, size
FROM t1
WHERE t1.date = '2013-02-11'
AND NOT EXISTS (
SELECT item, size
FROM t1
WHERE t1.date = '2013-02-13'
)
どちらも空のセットを返します。
これを機能させる唯一の方法は、一時テーブルを使用することです。
CREATE temporary table temp1
SELECT * FROM t1 WHERE date = '2013-02-11';
CREATE temporary table temp2
SELECT * FROM t1 WHERE date = '2013-02-13';
SELECT temp1.item, temp1.size FROM temp1
LEFT JOIN temp2
ON temp1.item = temp2.item AND temp1.size = temp2.size
WHERE temp2.size IS NULL
一時的なテーブルは使用できなくなります。一時テーブルを使用せずにこれを実現するにはどうすればよいですか?
どうもありがとう、
(優しくしてください、私は始めたばかりです!)