2016-10-20 3 views
0

Ich möchte Tabelle order mit Tabelle invoice beitreten so bekomme ich die ord_ref und fah_nr zusammengeführt in der gleichen Ergebnismenge. Kann mir jemand bei der Abfrage helfen?Tabellen mit verschiedenen ID verbinden

Tabelle Bestellen

ord_nr ord_dept ord_date ord_customer ord_anlegg ord_ref 
17264   7 2005-11-16 52815   2005  55 
18132   7 2008-08-30 58087   2008  527 

Tabelle Rechnung

fah_nr fah_customer fah_ordre fah_anlegg fah_avdeling 
68903  52815  17264  2005  7 
69616  53796  18132  2008  7 

Ausgabe

Ord_nr fah_ordre  fah_anlegg fah_nr ord_ref 
17264 17264   2005  68903  55 
18132 18132   2008  69616  527 
+1

Ein einfacher Join. Was hast du probiert? – jarlh

+2

Was ist der Fehler, den Sie bekommen? Wie sieht Ihre Anfrage aus? –

+0

Bitte markieren Sie die Datenbank, die Sie verwenden – NzGuy

Antwort

1

Wenn ich Ihre Forderung nach einfachen Sie suchen können richtig verstanden dann beitreten

SELECT o.Ord_nr,i.fah_ordre,fah_anlegg,fah_nr,ord_ref 
FROM [Order] o 
INNER JOIN Invoice i ON o.ord_nr = i.fah_ordre 
+0

Beachten Sie, dass ORDER ein reserviertes Schlüsselwort in SQL ist und daher ein sehr schlechter Name für eine Tabelle ist. Das heißt, es kann verwendet werden, erfordert aber die Flucht; Diese Antwort verwendet '[Order]', was mit MS SQL Server kompatibel ist. Andere SQL-Dialekte können sich unterscheiden, wie zum Beispiel "Order" oder "Order" – MatBailie

+1

@MatBailie, und ANSI SQL hat doppelte Anführungszeichen, z. "Ordnung". MS SQL Server unterstützt dies ebenfalls. – jarlh

+0

Vereinbaren Sie mit @jarlh MS SQL Server unterstützt das auch -Thanks Jarlh –

0

Sollte eine ziemlich einfache Verbindung sein. Wählen Sie einfach die Werte, die Sie möchten, gehen Sie dann links anschließen oder eine innere Verknüpfung

Hier ein Beispiel mit INNER JOIN

SELECT 
    Order.ord_nr AS ord_nr, 
    Invoice.fah_ordre AS fah_ordre, 
    Invoice.fah_anlegg AS fah_anlegg, 
    Invoice.fah_nr AS fah_nr, 
    Order.ord_ref AS ord_ref 
FROM 
    Order 
INNER JOIN 
    Invoice 
ON 
    Order.ord_nr = Invoice.fah_ordre 

Hier ist ein Beispiel mit LEFT JOIN

SELECT 
    Order.ord_nr AS ord_nr, 
    Invoice.fah_ordre AS fah_ordre, 
    Invoice.fah_anlegg AS fah_anlegg, 
    Invoice.fah_nr AS fah_nr, 
    Order.ord_ref AS ord_ref 
FROM 
    Order 
LEFT JOIN 
    Invoice 
ON 
    Order.ord_nr = Invoice.fah_ordre 

Der Unterschied in der zwei, ist das, wenn ein Datensatz nur in einer der Tabellen vorhanden ist, dann wird der LINKE JOIN Ihnen immer noch ein Ergebnis geben, aber der INNER JOIN wird nicht.

(Bearbeitet und entfernt den alten impliziten Join, der veraltet ist)

+1

Ermutigen Sie die Leute nicht, diese alte, implizite Joinsyntax zu verwenden. Lerne, dass sie von Anfang an explizite Joins durchführen. – jarlh

+1

@jarlh Du hast natürlich Recht, ich habe mein Beispiel bearbeitet und das veraltete Beispiel entfernt. – MartinMouritzen

Verwandte Themen