Blaubart: Teilergebnisse zusammenfassen

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?

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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?

  2. 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.name

    Mit 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. 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.