Ich versuche, eine Abfrage zu finden, die alle Personen zurückgibt, einschließlich der Firma, der sie angehören, und Firmen, die noch keine Person zugewiesen haben.MYSQL - Zeile auswählen, selbst wenn Zeile nicht beitreten
Firma
cid | cname
--------------
1 Company 1
2 Company 2
Person
pid | pname | fk_company
---------------------------
1 Person 1 1
2 Person 2 1
gewünschte Ergebnis
pid | pname | fk_company | cid | cname
----------------------------------------------
1 Person 1 1 1 Company 1
2 Person 2 1 1 Company 1
NULL NULL NULL 2 Company 2
Vielen Dank im Voraus
Zeigen Sie uns Ihre Versuche, wir machen Ihre Arbeit nicht für Sie. Tipp: Verwenden Sie 'LEFT JOIN'. [ask] – HoneyBadger
Beginnen Sie also mit "Company" und "LEFT JOIN" den anderen. Übrigens müssen Sie 'FULL JOIN' verwenden, wenn Sie sowohl alle Firmen als auch alle Personen haben wollen. – HoneyBadger
Wenn ich eine Lösung hätte, die nahe an dem ist, was ich möchte, dann hätte ich es aufgenommen. Aber ich nicht. Mit einem einfachen linken Join (SELECT * FROM Person LEFT JOIN Firma ON person.fk_company = company.cid) bekomme ich alle Leute einschließlich der Firma, der sie angehören, aber dann vermisse ich die Firmen, die keine Person zugewiesen haben. Also denke ich, dass ich eine weitere Verbindung hinzufügen muss, aber ich kann seine Bedingungen nicht herausfinden. Mit einem Cross-Join bekomme ich ziemlich viele Ergebnisse. Nun, ich könnte sie später aussortieren, aber ich denke, das wird ziemlich viel Leistung benötigen. Ich hoffe, dass es eine elegante Lösung gibt, die ich nicht sehen kann ... – Michael