Vinzenz Mai: Standardwert für NULL-Werte nehmen

Beitrag lesen

Hallo

vielleicht habe ich "COALESCE" nicht ganz verstanden,

sehr wahrscheinlich.

aber bedeutet das nicht das ich unterschiedliche Spalten für die Sprache haben müsste?

Nein.

Ich habe aber nur eine Spalte für die Sprache und möchte ja nur andere Spaltenwerte selektieren und nur anhand der Sprache unterscheiden.

Ja, dafür nimmt man COALESCE().

$sql_info = $DBO->query("SELECT InfoName,InfoLabel FROM configinfo WHERE Language = '{$db_col_language}' ") ;

  
SELECT  
    InfoName,  
    InfoLabel,  
    COALESCE(Language, 'ENG')  
FROM  
    configinfo

Fertig. Ausprobieren mit dem SQL-Client Deiner Wahl.

InfoName InfoLabel Language

Name1    Label1    ENG
Name2    Label2    ENG
NaDEU    LabDEU    DEU

Angenommen die Sprache des Users Fritz ($db_col_language) wäre DEU und es gibt keinen Eintrag mit der Zeile DEU sondern nur ENG.

?? was willst Du mir damit sagen.
Ich sehe keinen Fritz, ich habe keine Ahnung, was $db_col_language bedeutet, ich sehe keine zweite Tabelle.

Obige SELECT Abfrage würde dann bei mir nichts enthalten bzw. schlägt fehl.
Dann sollten Die Zeilen mit dem Default Wert ENG gelesen werden.

Wenn Du zwei Tabellen hast, nimm einen LEFT JOIN und COALESCE().

Freundliche Grüße

Vinzenz