SELECT - Frage

10/09/2009 - 16:46 von Markus Baechler | Report spam
Hallo NG,

ich habe zwei Tabellen (A, B), die mit INNER JOIN verknüpft sind (1:n). Ich
möchte als Ergebnis einer SELECT-Abfrage aber eine 1:1-Verknüpfung
darstellen. Die Abfrage muss sich also den ersten Datensatz der B-Tabelle
automatisch holen und mit der A-Tabelle verknüpfen, also aus der n-Menge
immer das erste Element. Ich hatte versucht in die FROM-Klausel ein TOP 1
einzubauen, was allerdings fehl schlug.

Hat jemand eine Idee, ob das mit einer Abfrage überhaupt realisierbar ist?


Gruß,
Markus
 

Lesen sie die antworten

#1 Elmar Boye
10/09/2009 - 17:46 | Warnen spam
Hallo Markus,

Markus Baechler schrieb:
ich habe zwei Tabellen (A, B), die mit INNER JOIN verknüpft sind (1:n). Ich
möchte als Ergebnis einer SELECT-Abfrage aber eine 1:1-Verknüpfung
darstellen. Die Abfrage muss sich also den ersten Datensatz der B-Tabelle
automatisch holen und mit der A-Tabelle verknüpfen, also aus der n-Menge
immer das erste Element. Ich hatte versucht in die FROM-Klausel ein TOP 1
einzubauen, was allerdings fehl schlug.

Hat jemand eine Idee, ob das mit einer Abfrage überhaupt realisierbar ist?



Ab SQL Server 2005 und spàter gibt es CROSS APPLY,
womit es einfach zu realisieren ist:
<URL:http://msdn.microsoft.com/de-de/lib...6.aspx>

Z. B. für die Northwind Customers + Orders
SELECT *
FROM dbo.Customers AS c
CROSS APPLY (SELECT TOP (1) o.*
FROM dbo.Orders AS o
WHERE c.CustomerID = o.CustomerID
ORDER BY OrderDate) AS co

Gruß Elmar

Ähnliche fragen