2017-12-20 16 views
-1

に基づいて2つのテーブルからの結果を返すために、TSQL、色(VALUES(「アウディ」、「赤」)、(「アウディ」、「ブルー」からBMW、ブラック)、AS車(メイク、カラー)私は2つの単純なクエリSELECTメイク</p> <p>を持ってどのように非一致する行

セレクトカラーFROM(VALUES( ' AS 'の色(カラー)

enter image description here(色は、赤色)、(青色)、(黒色)、(黄色)

SQL1はSQL2が、私は、各自動車メーカーから入手できない色をリストしたい

を購入したい車の顧客の色を返します
各自動車メーカーからの色がご利用いただけ返します。例えば、
。アウディホワイト、アウディイエロー...

TSQLクエリでmを助けてください。

更新:これは重複する質問ではありません。私はすでにその答えを試みたが、私は期待している結果を得ていない。私は人々が議決したり、重複してそれをマークする前に質問を読んでほしい。

+0

を使用することです、あなたは一致するエントリを持つ行を選択する方法[の –

+0

可能な複製から '選択a.make、b.color ような何かを試すことができます別のテーブルに?](https://stackoverflow.com/questions/4076098/how-to-selectrows-with-no-matching-entry-in-another-table) –

+0

@Tab Alleman私はすでにそれを見てきましたしかし、私は期待している結果を得ていない。あなたのリンクに提案されている方法を使って欲しいクエリを書き込めますか? –

答えて

2

これはあなたの後の答えです。私がコメントに入れたように、私はと仮定していますが、あなたがそれを提供していないので、私はそれを使用していません。Makesテーブルがあります。

WITH C AS (
    SELECT Color FROM (VALUES('Red'),('Blue'),('Black'),('Yellow'),('White'),('Silver'),('Brown')) AS Colors(Color)), 
MC AS (
    SELECT Make, Color FROM (VALUES('Audi','Red'),('Audi','Blue'),('Audi','Black'),('BMW','Black'),('BMW','Yellow')) AS Cars(Make, Color)), 
--This is the answer 
--I assume you actually have a table for Car makes, however, you haven't incldued that in your data, so enither have I: 
M AS (
    SELECT DISTINCT Make 
    FROM MC) 
SELECT * 
FROM C 
    CROSS APPLY M 
WHERE NOT EXISTS (SELECT * 
        FROM MC 
        WHERE C.Color = MC.Color 
        AND M.Make = MC.Make); 
+0

有益な回答ありがとう –

1

別のオプションは、EXCEPT

WITH C AS (
    SELECT Color FROM (VALUES('Red'),('Blue'),('Black'),('Yellow'),('White'),('Silver'),('Brown')) AS Colors(Color)), 
MC AS (
    SELECT Make, Color FROM (VALUES('Audi','Red'),('Audi','Blue'),('Audi','Black'),('BMW','Black'),('BMW','Yellow')) AS Cars(Make, Color)) 

select Make, Color from C 
cross join (select distinct Make from MC) as M 
except 
select Make, Color from MC 
関連する問題