Tabellenspalten verschmelzen

Jakob

Aktives Mitglied
Thread Starter
Dabei seit
05.01.2004
Beiträge
1.070
Reaktionspunkte
21
Hallo!

Ich habe eine Tabelle mit zwei Spalten, die linke voll besetzt, in der rechten nur manche.
Für manche Ausgaben möchte ich, wenn es einen Wert in Spalte 2 gibt diesen anstatt den Wert der Spalte 1 ausgeben.

Dies:
Code:
Spalte 1  |  Spalte 2
    a     |    NULL
    b     |     2
    c     |    NULL
    d     |     3

Soll also für die Abfrage zu
Code:
Spalte 1  |  Spalte 2
    a     |    NULL
    2     |     2
    c     |    NULL
    3     |     3
werden.

Die Tabelle sollte nicht dauerhaft verändert werden, es gilt nur für manche Aufrufe. Kann ich das auf MySQL-Ebene hinbekommen? Würde es ungern in einer PHP-for-Schleife lösen.
 
?! wenn ein wert null ist, dann ist er null. mysql ist eine datenbank und keine programmierumgebung mit der man "wenn dann"-bedingungen definieren kann (soweit ich weiß)
 
Das geht nur mit ner temporären Tabelle ( ich glaub das mysql beizeiten auch!?)

Erstell einfach eine temporäre Tabelle, mach einen SELECT aus Spalte 1 da hinein und dann einen UPDATE auf diese Tabelle aus Spalte2 wo Spalte1 NULL ist. Resultat ist eine von Spalte2 überlagerte Spalte1. Die kannst Du dann auslesen und die temporäre Tabelle verwerfen!
 
Zuletzt bearbeitet:
Temporäre Tabelle? Keine IF-Anweisung in MySQL? Sag mal denke ich hier falsch oder kennt ihr die performantesten MySQL-Befehle nicht?

Ich würde es so lösen:
Code:
SELECT IF(Spalte2.feld IS NOT NULL, Spalte2.feld, Spalte1.feld) FROM blabla LEFT JOIN blabla WHERE blabla ORDER BY blabla

Die IF-Anweisung in MySQL geht halt IF(Bedingung, Rückgabe-bei-Erfüllung, else-Zweig). Man kann auch Texte zurückgeben (z.B. für Checkboxen)

IF (checkboxfeld=0, '', 'checked="checked")
 
master_p schrieb:
Sag mal denke ich hier falsch oder kennt ihr die performantesten MySQL-Befehle nicht?

Sorry, wegus==> Microsoft SQL-Server !
Außerdem bin ich bemüht mit Standard-SQL auszukommen, eben falls ich mal nen mysql oder postgres irgendwo brauche!
 
du könntest das mit einem self join in sql verwirklichen. wie die sql-syntax genau lautet, weiß ich nicht aus dem stehgreif. habe aber mal ein ähnliches problem auf diese weise gelöst.
 
Hallo,

nach längerem Überlegen habe ich die Struktur jetzt nochmals geändert, diesen speziellen Join brauche ich da jetzt erstmal nicht mehr. Vielen Dank für die vielen Tipps!

Nach 500-seitiger Lektüre meine ich mit UNION das am geschicktesten hinzubekommen.

Bzgl. der IFs:
Es gibt in SQL eine CASE-Funktion, die sowas macht:
Code:
CASE expr
WHEN value1 THEN result1
  [when value2 THEN result2]… [ELSE resultn]
END
Die soll aber auch je nach Hersteller leicht anders benannt sein, zumindest soll es sie aber überall geben.
 
Zurück
Oben Unten