[MySQL] - Constraints - NULL als 0 ablegen?

Trash

Erfahrenes Mitglied
Hallo,
ich habe zwei Tabellen. Auszug:

Code:
user:
id INT(8) NOT NULL
selected_team_id INT(8) NULL

team:
id INT(8) NOT NULL
Es gibt ein Constraint zwischen user.selected_team_id und der Spalte team.id. Wenn also das team gelöscht wird, soll selected_team auf NULL/0 gesetzt werden.

Wenn sich ein User registriert ist er erstmal keinem Team zugeordnet. Da ich die Constraints leider erst jetzt einbaue, habe ich immer damit gearbeitet, dass selected_team_id == 0 ist wenn der User noch keinem Team zugeordnet ist. Setze ich den Wert auf NULL habe ich ein Problem, da meine SQL Abfragen darauf ausgelegt sind, dass sie mit ID's als Zahlen arbeiten und bspw. bei einer Abfrage mit der team.id kein Ergebnis liefern. Die Abfrage funktioniert aber, da ich bei MySQLi darauf hinweise, dass die ID ein Integer ist.

Bekomme ich es irgendwie hin, dass NULL als 0 interpretiert wird, bzw. ich 0 benutzen kann ohne das der Constraint greift. Ein Dummy-Team mit der id=0 anzulegen finde ich äußerst unschön...oder wie löst man so etwas?

Danke!
 
Also wenn ich dich richtig verstehe könntest du doch einfach ein IF nehmen oder?
SQL:
 IF(id is NULL,0,id)
 
Zuletzt bearbeitet von einem Moderator:
@Steusi
Warum nicht gleich IFNULL()? (In Oracle NVL(), in MS Access NZ())
SQL:
IFNULL(id, 0)
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
bei mir muss die Funktion z.B. IFNULL in der WHERE-Clause angewendet werden. Im Moment sieht das Ganze so aus:

Code:
$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ".$tid." AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";

Das Problem ist, dass $tid = NULL ist, es aber als 0 interpretiert werden müsste. Geht das überhaupt in der WHERE-Clause?

Danke + ein schönes WE!
 
Zurück