2017-06-25 1 views
-3

Ich brauche Obst Liste, die Preis größer als in TabelleA für jede Frucht.sql Abfrage erhalten Daten über Vorbedingungen

ID | fruit | Price 
---------------------------- 
    1 | apple | 10 
    2 | banana| 7 
    3 | grapes| 6 

dann habe ich täglich Tabelle wie unten

ID | fruit | Price 
---------------------------- 
    1 | apple | 9 
    2 | banana| 5 
    3 | grapes| 9 
    4 | mango | 15 

in diesem Zustand i nur erhalten Trauben

+0

Ich entfernte die inkompatiblen Datenbank-Tags. Markieren Sie nur mit der Datenbank, die Sie wirklich verwenden. –

Antwort

0

kommen gerade von ID und fügen Sie Ihre zusätzliche Bedingung (price in tableA größer als price in dailyTable). Sie müssen nicht nach Spalte fruit beitreten - aber wenn ja, wird es nicht Ihre Ergebnismenge ändern.

SELECT TableA.*, dailyTable.Price 
    FROM TableA 
INNER JOIN dailyTable 
    ON TableA.ID = dailyTable.ID 
    AND TableA.Price > dailyTable.Price 

Die Spalte fruit ist redundante Daten. Sie sollten es also nicht in der Tagesübersicht speichern.

+0

Das würde Apfel und Banane, nicht Traube ergeben, was das OP als die erwartete Ausgabe erwähnte. –

2

Ich denke, man kann nur die daily und tableA Tabellen auf der ID Frucht verbinden, und dann vergleiche Preise.

SELECT t1.* 
FROM daily t1 
INNER JOIN tableA t2 
    ON t1.ID = t2.ID 
WHERE t1.price > t2.price 

Bitte beachte, dass wir auf den ID statt der Frucht Namen verbinden, da in der Theorie Namen möglicherweise nicht völlig einzigartig in einem sehr großen Tisch von Früchten.