Ich habe zwei Tabellen:MySQL - JOIN GROUP BY mit ORDER der Gruppierung
CREATE TABLE Person {
ID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Surname VARCHAR(50) NOT NULL
}
und
CREATE TABLE Address {
ID INT PRIMARY KEY,
ID_Person INT NOT NULL,
Street VARCHAR(50),
HouseNumber VARCHAR(15),
City VARCHAR(75),
Zipcode VARCHAR(10),
CountryCode CHAR(2),
IsPrimary TINYINT(1) DEFAULT 0
}
Jede Person kann muptiple Adressen haben, aber höchstens kann man primär (IsPrimary = 1
) .
Ich möchte eine Liste von Personen mit einer Adresse bekommen. Wenn eine Person eine primäre Adresse hat, sollte sie angegeben werden, wenn nicht, spielt es keine Rolle, welche Adresse abgerufen wird.
Ich habe diese Anfrage:
SELECT
p.Name,
p.Surname,
a.Street,
a.Housenumber,
a.City,
a.Zipcode
FROM
Person AS p
LEFT JOIN (select * from Address ORDER BY IsPrimary DESC) AS a ON p.ID = a.ID_Person
GROUP BY p.ID
aber, dass die Ergebnisse nicht erzielen, die ich erwarte. Ich erwartete, dass die erste Zeile der verbundenen Tabelle bei der Ausführung von GROUP BY
abgerufen wird, aber das ist nicht der Fall.
ähnliche Frage wurde gefragt, here aber die Lösung ist ziemlich schwierig in meiner Situation.
Das funktioniert, danke! – Zbynek