alternatives Where ?

alt-f4

Grünschnabel
Hallo

Ich bin leider noch nicht so fit in mysql... deshalb frage ich mal, ob es möglich ist dies mit einem query durchzuführen

Folgende Tabelle in MySQL 4.1...:
Code:
ID	|contentID	|langID	|html
1	|88		|de	|asdf de
2	|88		|fr	|asdf fr
3	|87		|de	|wert de


Ich mal ein einfachen select also
Code:
select * from content where contentID = 87 and langID = de
jetz kann es ja mal vorkommen das etwas in einer Sprache (langID) nicht vorhanden ist. wi e kann ich das anstellen, sodass wenn langID = fr Null ist langID = de zum zuge kommt?

ifnull?

Herzlichen Dank

steevi
 
Zuletzt bearbeitet:
Wie ich das verstehe willst Du auf bei der Abfrage:

select * from content where contentID = 87 and langID = 'fr'

Als Ergebnis den Datensatz mit der id 3 ausgeben?

Um das in einem Statement zu machen könntest Du wie folgt vorgehen:

select * from content where contentID = 87 and langID = 'fr'
UNION
select * from content where contentID = 87 and langID = 'de' Where NOT EXISTS (
select * from content where contentID = 87 and langID = 'fr')

Ich kenn mich mit MySQL nicht aus, kann also sein, das die Abfrage syntaktisch nicht ganz korrekt ist, aber ich denke die Logik wird klar?
 
Hallo!

Schau mal hier:
Code:
 mysql> create table lang(id int not null auto_increment, lang varchar(32), primary key(id));
 Query OK, 0 rows affected (0.19 sec)
 
 mysql> insert into lang (lang) values ('de');
 Query OK, 1 row affected (0.03 sec)
 
 mysql> insert into lang (lang) values ('fr');
 Query OK, 1 row affected (0.03 sec)
 
 mysql> insert into lang (lang) values (null);
 Query OK, 1 row affected (0.03 sec)
 
 mysql> select * from lang;
 +----+------+
 | id | lang |
 +----+------+
 |  1 | de   |
 |  2 | fr   |
 |  3 | NULL |
 +----+------+
 3 rows in set (0.00 sec)
 
 mysql> select id, coalesce(lang,'de') lang from lang;
 +----+------+
 | id | lang |
 +----+------+
 |  1 | de   |
 |  2 | fr   |
 |  3 | de   |
 +----+------+
 3 rows in set (0.00 sec)

...oder du verwendest einen passenden default Wert wie teppi schon sagte.

Gruß Tom
 
Zurück