Teilergebnisse zusammenfassen
Blaubart
- datenbank
Hallo SELFer.
Ich suche eine Möglichkeit, in einer alten 3.23er Version von MySQL die Ergebnisse zweier JOINs in einer gemeinsamen Spalte als Endergebnis zusammenzufassen.
SELECT
node.nodeid,
a.name,
b.name
FROM
node
LEFT JOIN
a ON a.nodeid = node.nodeid
LEFT JOIN
b ON b.nodeid = node.nodeid
WHERE
<Auswahlkriterium für Knoten>
(Die Tabellen sind so organisiert, daß wirklich immer nur genau ein Eintrag aus der Gesamtmenge der Daten in "a" und "b" zu einer "nodeid" existiert.)
Mit dieser Query überschreibt "b.name" allerdings die Ergebnisse von "a.name" komplett, anstatt nur die leeren Zellen zu ersetzen. Auch nach längerem Wälzen der Doku und einigem Herumprobieren mit den unterschiedlichen JOINs bin ich zu keiner Lösung gekommen. Kann mir jemand weiterhelfen?
Hi,
SELECT
node.nodeid,
a.name,
b.name
[...]
Mit dieser Query überschreibt "b.name" allerdings die Ergebnisse von "a.name" komplett,
nein, das passiert erst beim Auslesen. Du kannst mittels AS andere Namen vergeben, oder mit handelsüblichen Funktionen und Operatoren die beiden Spalten zu einem Wert zusammenfügen.
Auch nach längerem Wälzen der Doku und einigem Herumprobieren mit den unterschiedlichen JOINs bin ich zu keiner Lösung gekommen.
Das liegt vermutlich daran, dass Dir Spielereien bei den JOINs hier nicht viel bringen :-)
Cheatah
Hallo Cheatah.
Du kannst mittels AS andere Namen vergeben...
Genau das möchte ich vermeiden, weil es mir die Weiterbearbeitung der Daten unnötig verkompliziert.
...oder mit handelsüblichen Funktionen und Operatoren die beiden Spalten zu einem Wert zusammenfügen.
Genau nach solchen Funktionen suche ich ja -- das Konsultieren der Doku beschränkte sich nicht auf JOINs. Welche sind das?
Hi,
Hallo SELFer.
Ich suche eine Möglichkeit, in einer alten 3.23er Version von MySQL die Ergebnisse zweier JOINs in einer gemeinsamen Spalte als Endergebnis zusammenzufassen.
SELECT
node.nodeid,
a.name,
b.nameMit dieser Query überschreibt "b.name" allerdings die Ergebnisse von "a.name" komplett, anstatt nur die leeren Zellen zu ersetzen.
Weiß nicht, ob MySQL 3.x das schon kann, aber probier mal
SELECT node.nodeid, IF(a.name IS NOT NULL, a.name, b.name) AS name
oder
SELECT node.nodeid, IFNULL(a.name, b.name) AS name
cu,
Andreas
Weiß nicht, ob MySQL 3.x das schon kann...
Kann es. Hab zwar heute IFNULL schonmal am Wickel gehabt, aber irgendwie nicht so richtig für voll genommen...
Danke.