2016-05-17 4 views
0

私は、結果を表示するためのクエリを作成するのに助けが必要です。ifが存在するテーブルを返すSQLクエリ戻り値2 else return price 1

Supose私はテーブルを持っている:それはPriceNumber = 1を示す存在しない場合、私はPriceNumber = 2を示す必要があると

表1

ProductId Description 
1   Banana 
2   Apple 
3   Melon 
4   Orange 

表2

ProductId PriceNumber Price 
1   1    86 
1   2    55 
2   1    58 
3   1    99 
3   3    66 
4   1    87 
4   2    78 

募集結果:

ProductId Description PriceNum Price 
1   Banana  2   55 
2   Apple  1   58 
3   Melon  1   99 
4   Orange  2   78 

ありがとうございました!ここで

+0

価格の列に2つの値がある理由を明確にすることはできますか? – Peter

+0

製品に複数の価格が設定されている可能性があります。 – Villa

+0

クライアント別、p.e. – Villa

答えて

1

は、テーブルの設定です:

CREATE TABLE Table1 
    (`ProductId` int, `Description` varchar(6)) 
; 

INSERT INTO Table1 
    (`ProductId`, `Description`) 
VALUES 
    (1, 'Banana'), 
    (2, 'Apple'), 
    (3, 'Melon'), 
    (4, 'Orange') 
; 


CREATE TABLE Table2 
    (`ProductId` int, `PriceNumber` int, `Price` varchar(5)) 
; 

INSERT INTO Table2 
    (`ProductId`, `PriceNumber`, `Price`) 
VALUES 
    (1, 1, '7,86'), 
    (1, 2, '3,55'), 
    (2, 1, '10,58'), 
    (3, 1, '2,99'), 
    (4, 1, '9,87'), 
    (4, 2, '6,78') 
; 

は、ここでは、コード内の実際の答えだ:

SELECT distinct(Table2.ProductId), 
     Description, 
     PriceNumber, 
     Price 
FROM Table2 
    INNER JOIN Table1 
    ON Table1.ProductId = Table2.ProductId 

WHERE (PriceNumber = 2) OR 
     (
      (Table2.ProductId not in (
        SELECT ProductId 
        FROM Table2 
        WHERE PriceNumber = 2 
        ) 
      ) 
      AND 
     (PriceNumber = 1) 
     ) 

は、ここでは、コードで遊ぶことができますsqlfiddleへのリンクです: http://sqlfiddle.com/#!9/234ab/4/0

+0

ありがとうございます。 – Villa

+0

あなたの統計によると、返品価格= 2または数= 1の場合の価格= 1だが、価格= 2を表示する必要があり、価格= 2がない場合は表示価格= 1となる。
[link](http:// sqlfiddle .com /#!9/234ab/1/0)。商品3には2つの価格がありますが、どれも価格2ではありません。 – Villa

+0

ああ、申し訳ありません。私は今更新しています – Projski

関連する問題