Sql wie kann ich mehrere Datensätze zu einem zusammenfassen?
Hallo, ich möchte gerne aus 4 Tabellen mit undershciedlicher Spaltenanzahl und benennung alle Werte bekommen und zu einem "return" wert zusammenfassen.
set @_var := 'select * from `_users` where _uuid="fd6fdbd3-610e-4fca-a02b"';
(select * from `_users` where _uuid="fd6fdbd3-610e-4fca-a02b")
union ALL
(select * from `_questuserdata` where _id=@_var._id)
union all
(select * from `_activequests` where _userid=@_var._id)
union all
(select * from `_completedquests` where _userid=@_var._id);
ist mein bisheriger Versuch, jedoch klappt das mit union nicht. Wie kann ich das anderweitig möglich machen?
3 Antworten
So wie ich deine Frage verstehe willst du einfach das kartesische Produkt der 4 Tabellen. Das geht in SQL einfach so:
SELECT * FROM _users, _questuserdata, _activequests, _completedquests
Für UNION müssen die Tabellen vereinigungsverträglich sein, also gleich viele Spalten besitzen.
UNIONS sind nur dann sinnvoll, wenn Du mehrere unabhängige Ergebnisse zusammen fassen willst, dann müssen die Spalten aber zueinander passen.
Für die meisten Fälle sind JOINS besser, da gibt's alle möglichen Varianten.
Kreuzprodukt durch Aufzählung der Tabellen. Sofern Attribute gematched werden sollen, einen geeigneten JOIN verwenden.
Und wenn ich mich nicht irre, dann sollte Union dem Namen nach eine Vereinigung sein.