Eintritt 3 Tabellen in Oracle SQL
Ich habe 3 Tabellen die Auflistung unten:
Table_A:
order_number | header_id
123 | 80001
Table_B
header_id | line_id | quantity
80001 | 10001 | 1
80001 | 10002 | 3
80001 | 10003 | 5
Table_C
header_id | line_id | hold_price_id | released_flag
80001 | 10001 | 2001 | Y
80001 | 10002 | 2002 | Y
80001 | 10003 | 2003 | N
Schrieb ich eine Abfrage, wie unten dargestellt:
SELECT A.order_number, A.header_id, B.line_id, B.quantity, C.hold_price_id, C.released_flag
FROM Table_A a,
Table_B b,
Table_C c
WHERE a.header_id = b.header_id
AND c.line_id = b.line_id
AND a.order_number = '123';
Mein Wunsch, die Ausgabe ist wie nachfolgend dargestellt:
order_number | header_id | line_id | quantity | hold_price_id | released_flag
123 | 80001 | 10001 | 1 | 2001 | Y
123 | 80001 | 10002 | 3 | 2002 | Y
123 | 80001 | 10003 | 5 | 2003 | N
Aber die Abfrage zeigt mir die unten Ergebnis:
order_number | header_id | line_id | quantity | hold_price_id | released_flag
123 | 80001 | 10001 | 1 | 2001 | Y
123 | 80001 | 10001 | 3 | 2002 | Y
123 | 80001 | 10001 | 5 | 2003 | N
123 | 80001 | 10002 | 1 | 2001 | Y
123 | 80001 | 10002 | 3 | 2002 | Y
123 | 80001 | 10002 | 5 | 2003 | N
123 | 80001 | 10003 | 1 | 2001 | Y
123 | 80001 | 10003 | 3 | 2002 | Y
123 | 80001 | 10003 | 5 | 2003 | N
Ist es etwas falsch in meiner Abfrage? Bitte um Rat.
Danke!
Bitte Bearbeiten Sie die Frage und zeigen Sie sample-Daten und die gewünschten Ergebnisse.
Mindestens müssen
Mindestens müssen
AND c.header_id = b.header_id
.InformationsquelleAutor Law | 2015-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen noch nicht beigetreten sind, mit allen üblichen Tasten, so dass Sie immer kartesischen Ergebnisse. Sie muss mitmachen ein, um c-header-id, wie so
InformationsquelleAutor nomistic
Müssen Sie lernen, um die ordnungsgemäße Verwendung von expliziten
join
syntax. Eine einfache Regel: niemals verwenden Sie Kommas, in derfrom
- Klausel. Immer explizitejoin
s:InformationsquelleAutor Gordon Linoff
WÄHLEN Sie ein.order_number, ein.header_id, b.line_id, b.Menge ,c.hold_price_id,c.released_flag
VON Table_A ein cross JOIN
Table_B b cross join table_C c;
ORDER_NUMBER HEADER_ID LINE_ID MENGE HOLD_PRICE_ID RELEASED_F
9 Zeilen ausgewählt.
InformationsquelleAutor k keerthi