/ / Ich habe eine SQL-Abfrage, die Daten abruft, aber jede Person kann viele Zahlen haben, die für jede Person mehrere Zeilen erzeugen. Ich benötige 1 Zeile pro Person - SQL, SQL-Server

Ich habe eine SQL-Abfrage, die Daten abruft, jedoch kann jede Person viele Zahlen haben, die mehrere Zeilen für jede Person erzeugen. Ich brauche 1 Zeile pro Person - SQL, SQL-Server

Beispiel

Meine Abfrage würde zwei Zeilen für Bob mit dem erzeugenEinziger Unterschied ist die Telefonnummer. Die Tabelle, aus der ich die Telefonnummern erhalte, hat jedoch eine Telefonnummer. Zum Beispiel wäre die erste Zeile für bob die ID des Telefontyps 1 und die zweite Zeile wäre 2. Ich brauche beide in derselben Zeile

Ich nahm an, ich müsste für jeden Telefon-ID-Typ eine Unterabfrage durchführen ... aber das scheint nicht zu funktionieren. Ich komme einfach immer wieder zurück

Unterabfrage gab mehr als 1 Wert zurück. Dies ist nicht zulässig, wenn die Unterabfrage folgt =,! =, <, <=,>,> = Oder wenn die Unterabfrage als Ausdruck verwendet wird.

Welche Abfrage erzeugt

Was ich möchte meine Anfrage zu produzieren

Was ich für die Abfrage benötigen, um zu produzieren

Vielen Dank

Antworten:

0 für die Antwort № 1

Wenn Sie eine begrenzte Anzahl von Telefontypen haben, können Sie a verwenden LINKE ÄUSSERE VERBINDUNG auf telephone Tabelle für jeden Typ. Ex:

SELECT e.name, t1.phoneNumber AS telephone1, t2.phoneNumber AS telephone2, e.email, ...
FROM person AS e
LEFT OUTER JOIN telephon AS t1 ON t1.personID = e.Id AND typeId = 1
LEFT OUTER JOIN telephon AS t2 ON t2.personID = e.Id AND typeId = 2
...
WHERE ....