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-ID: 267032

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

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

114757
114757 21.03.2015 aktualisiert um 16:23:28 Uhr
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
bolshi
bolshi 21.03.2015 aktualisiert um 14:19:36 Uhr
Goto Top
Du könntest in der Spalte 'kfz_zustaende.zustand' beim den Wert 'DEFAULT WHATEVER' definieren:

CREATE TABLE kfz_zustaende (
    `zustand`     DEFAULT WHATEVER
)
stefaan
stefaan 21.03.2015 um 15:09:53 Uhr
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
Biber
Biber 21.03.2015 aktualisiert um 22:40:09 Uhr
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]
mabue88
mabue88 21.03.2015 um 20:40:34 Uhr
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!