2016-05-17 5 views
0

Ich brauche Hilfe bei der Abfrage, um das folgende Ergebnis zu zeigen.SQL-Abfrage, um die Tabelle zurückzugeben, wenn sie existiert. Retun price 2 else return price 1

nehme an Ich habe Tabellen:

Tabelle 1

ProductId Description 
1   Banana 
2   Apple 
3   Melon 
4   Orange 

Tabelle 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 

Ich brauche PriceNumber = 2 zu zeigen, und wenn es nicht vorhanden ist zeigen nicht PriceNumber = 1

Gewünschtes Ergebnis:

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

Vielen Dank!

+0

Können Sie klären, warum in der Spalte mit der Preisnummer zwei Werte vorhanden sind? – Peter

+0

Das Produkt kann mehr als einen Preis haben. – Villa

+0

Nach Kunde, p.e. – Villa

Antwort

1

Hier ist der Aufbau der Tabellen:

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') 
; 

Hier ist die tatsächliche Antwort in Code:

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) 
     ) 

Hier ist ein Link zu einem sqlfiddle, wo Sie mit dem Code spielen kann: http://sqlfiddle.com/#!9/234ab/4/0

+0

Vielen Dank für Ihre Antwort. – Villa

+0

Ihre Aussage besagt, dass Rückgabepreis = 2 oder Preis = 1 wenn Anzahl = 1. Aber ich muss Preis = 2 anzeigen und wenn Preis = 2 nicht existiert, zeigen Sie Preis = 1 an.
[link] (http: // sqlfiddle .com/#! 9/234ab/1/0). Bitte beachten Sie, dass Produkt 3 2 Preise hat, aber keines ist Preis 2. – Villa

+0

Oh Ok, tut mir leid. Ich aktualisiere es jetzt – Projski

Verwandte Themen