2016-09-08 2 views
-5

W3schools:und deutlichen entsprechenden Datensätze aus der rechten Tabelle

LEFT JOIN: Gibt alle Zeilen aus der linken Tabelle und die entsprechenden Datensätze aus der rechten Tabelle

Ziel: Fügen Sie eine einzelne Spalte von der rechten Tabelle

Challe nge: die rechte Tabelle viele wiederholte Reihen

Tor hat: Würde ich gern die Verbindung zurück, um die genaue Anzahl der Zeilen, wie in der linken Tabelle, oder in anderen Worten, die unterschiedlichen entsprechenden Datensätze aus der rechten Tabelle

Beispiel aktualisieren:

Es gibt zu viele Kunden für jedes Bild, so dass eine einzelne ImageID wiederholt werden kann. Ich würde gerne ein einzelnes von der Kundenseite zurückgeben.

SELECT Images.ImageID, Customers.BooleanColumn 
FROM Images 
LEFT JOIN Customers 
ON Images.ImageID = Customers.ImageID 
+0

Ändern Sie Ihre Join-Prädikate, um weitere Spalten hinzuzufügen. –

+0

@SeanLange, warum sollte ich das tun? – usefulBee

+0

Sie müssen mit Beispieldaten kommen ... Wenn Sie genau übereinstimmen wollen, warum nicht 'inner beitreten'? – techspider

Antwort

0

Wenn Sie Ihre Ergebnismenge gegen ImageID und BooleanColumn gruppieren möchten, verwenden Sie das folgende Skript.

SELECT Images.ImageID, Customers.BooleanColumn 
    FROM Images 
     LEFT JOIN Customers 
      ON Images.ImageID = Customer.ImageID 
    Group by Images.ImageID, Customers.BooleanColumn 

Wenn Sie mindestens einen mit der ImageID verknüpften Kunden überprüfen möchten, verwenden Sie eines der folgenden Skripts.

 SELECT DISTINCT ImageID 
      , (case when Customers.ImageId is null Then 0 Else 1) BooleanValue 
    FROM Images 
     LEFT JOIN Customers 
      ON Images.ImageID = Customers.ImageID 

OR

SELECT ImageId, 
       ISNULL ( (Select 1 from customers c 
        Where c.imageId=I.imageid),0)BooleanValue 
    FROM Images I 
0

es gibt noch keine Abtastdaten mit oder gewünschten Ergebnisse zu arbeiten. Diese gelten als elementarer Bestandteil einer solchen Online-Frage. Daher ist dieser Code nicht getestet, sollte aber das liefern, wonach Sie suchen.

select i.ImageID 
    , c.BooleanColumn 
from Images i 
outer apply 
(
    select top 1 BooleanColumn 
    from Customers c2 
    order by c2.CustomerID --or whatever column you need for ordering 
) c 
Verwandte Themen