mabue88
Goto Top

MySQL - Wenn Zelleninhalt in View gleich NULL, dann Wert in Zelle schreiben?

Hallo,

ich habe gerade ein Problem, das ich anhand des folgenden Beispiels erkläre:

Tabelle 1:
Speichert allgemeine Daten eines KFZ. (Kennzeichen, Marke, Modell, ...)

Tabelle 2:
Speichert den aktuellen Zustand des KFZ (aufgeschlossen oder abgeschlossen). Zuordnung zu einem Fahrzeug durch Kennzeichen.


Zu Beginn liegen lediglich in Tabelle 1 die KFZ-Daten vor. Tabelle 2 ist leer. Tabelle 2 wird dann nach und nach gefüllt.


Mit einem View wird von jedem KFZ der aktuelle Zustand (aufgeschlossen/abgeschlossen) angezeigt.

Das sieht dann z.B. so aus:
SELECT kfz.kennzeichen, kfz_zustaende.zustand FROM kfz

LEFT JOIN kfz_zustaende
ON kfz.kennzeichen = kfz_zustaende.kennzeichen

Liegt für ein Kennzeichen noch kein Zustand vor, so ist dessen Wert in der Spalte kfz_zustaende.zustand NULL. Ich hätte dann aber gerne einen Art Default-Wert. Also dass der View in der Spalte kfz_zustaende.zustand die NULLs z.B. durch 'aufgeschlossen' ersetzt.

Gibt es dafür eine Möglichkeit?

Danke

Content-Key: 267032

Url: https://administrator.de/contentid/267032

Printed on: April 24, 2024 at 22:04 o'clock

Mitglied: 114757
114757 Mar 21, 2015 updated at 15:23:28 (UTC)
Goto Top
Moin,
du könntest die fehlenden Infos z.B. so in der zweiten Tabelle ergänzen
INSERT INTO kfz_zustaende (kennzeichen,zustand)
SELECT kfz.kennzeichen,"aufgeschlossen"  
FROM kfz
LEFT JOIN kfz_zustaende
ON kfz.kennzeichen = kfz_zustaende.kennzeichen
WHERE kfz_zustaende.zustand is NULL
http://www.w3schools.com/sql/sql_insert_into_select.asp

Oder gleich einen Default Wert für die Spalte definieren, so dass senn man ein neues Kennzeichen erfasst auch gleich ein Eintrag in der anderen Tabelle gemacht wird.

Gruß jodel32
Member: bolshi
bolshi Mar 21, 2015 updated at 13:19:36 (UTC)
Goto Top
Du könntest in der Spalte 'kfz_zustaende.zustand' beim den Wert 'DEFAULT WHATEVER' definieren:

CREATE TABLE kfz_zustaende (
    `zustand`     DEFAULT WHATEVER
)
Member: stefaan
stefaan Mar 21, 2015 at 14:09:53 (UTC)
Goto Top
Servus,

was auch immer du planst, nur so als Hinweis:
Zuordnung zu einem Fahrzeug durch Kennzeichen.

Überlege dir, ob es nicht vorkommen kann, dass hinter einem Kennzeichen einmal ein anderes Auto steckt (Verkauf, ...). Dann passt der Schlüssel hier ev. nicht. Für Frankreich sollte es passen, wenn ich mich richtig erinnere, hat dort ein Auto ein "Leben" lang dasselbe Kennzeichen.

Grüße, Stefan
Member: Biber
Biber Mar 21, 2015 updated at 21:40:09 (UTC)
Goto Top
Moin mabue88,

ändere deinen View auf
SELECT kfz.kennzeichen, Coalesce(kfz_zustaende, 'aufgeschlossen').zustand   
FROM kfz

LEFT JOIN kfz_zustaende
ON kfz.kennzeichen = kfz_zustaende.kennzeichen

Grüße
Biber
[Edit] Tippfehler berichtigt (s. Kommentar unten.[/Edit]
Member: mabue88
mabue88 Mar 21, 2015 at 19:40:34 (UTC)
Goto Top
Hallo alle Zusammen,

danke für eure Tipps. Schlussendlich brachte Biber den entscheidenden Hinweis. Auch wenn es Coalesce anstelle von Coalece heißen muss.

Danke!