2009-08-17 11 views
2

Ich habe zwei Tabellen (sagen wir "links" und "rechts" -Tabellen). Die rechte Tabelle hat von keiner bis zu mehreren Zeilen, die mit jeder Zeile auf der linken Tabelle übereinstimmen.LINKS OUTER JOIN mit keine Duplikate auf der linken Tabelle

Ich muss eine Abfrage ausführen, wo ich die beiden Tabellen auf die gleiche Weise wie ein LINKER OUTER JOIN verbinden kann, aber nur eine Zeile für jeden vorhandenen in der linken Tabelle bekommen. Diese Zeile sollte diejenige sein, die der höchsten ID auf der rechten Tabelle entspricht.

Ein NATÜRLICHER JOIN würde funktionieren, aber ich bekomme keine Zeilen aus der linken Tabelle, die keiner Zeile auf der rechten Seite entsprechen.

Antwort

2

Dies ist, was ich tun würde:

select * 
    from `left` as l 
    LEFT JOIN `right` as r 
     on (l.id = r.left_id) 
group by l.id 
order by r.id 
+0

Das mag nicht, dass es mir geht. Wo ist das bisschen, um die höchste ID zu bekommen? Und die Group By wird sich beschweren, wenn nicht jede Spalte in der Gruppe By angegeben ist. – MartW

+0

Editiert, um das Hor Scrollen zu beseitigen –

+2

Dies funktioniert nicht, Select * versucht, alle Spalten in beiden Tabellen auszugeben, alle Spalten außer L.Id verursachen einen Fehler, weil sie nicht in der Group By-Klausel sind. –

1

können Sie GROUP BY verwenden Klausel nur unterschiedliche Datensätze zu zeigen

+0

ja, aber das wäre nicht gib immer noch die höchste ID. – jini

4

Versuchen Sie folgendes:

Select L.[ValuesfromLeftTable], ... 
     R.[ValuesfromRightTable], ... 
From LeftTable as L 
    Left Join RightTable as R 
    On R.Id = (Select Max(id) 
       From RightTable 
       Where FK = L.Id) 
+0

Sieht nach einer guten Antwort aus. –

0
SELECT Left.Field1, Left.Field2, ... Right.Field1, Right.Field2, ... 
FROM tblLeft AS Left 
LEFT JOIN (SELECT CommonID, Max([ID]) AS MaxID 
    FROM tblRight 
    GROUP BY CommonID) AS RightMax ON Left.CommonID = RightMax.CommonID 
LEFT JOIN tblRight AS Right ON RightMax.MaxID = Right.[ID] AND Left.CommonID = Right.CommonID 
Verwandte Themen