Comment joindre à la première ligne
SELECT Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
FROM Orders
CROSS APPLY
(
SELECT TOP 1 LineItems.Quantity, LineItems.Description
FROM LineItems
WHERE LineItems.OrderID = Orders.OrderID
) LineItems2
Pour les versions de SQL Server antérieures à 2005, vous devez utiliser un INNER JOIN au lieu d’un CROSS APPLY :
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
JOIN LineItems
ON LineItems.LineItemGUID =
(
SELECT TOP 1 LineItemGUID
FROM LineItems
WHERE OrderID = Orders.OrderID
)
Veuillez noter que TOP 1 sans ORDER BY n’est pas déterministe : cette requête vous donnera un élément de ligne par commande, mais il n’est pas défini lequel ce sera.
Plusieurs invocations de la requête peuvent vous donner des éléments de ligne différents pour la même commande, même si les données sous-jacentes n’ont pas changé.
Si vous souhaitez un ordre déterministe, vous devez ajouter une clause ORDER BY à la requête la plus interne.