wenn spalte leer dann andere spalte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wenn spalte leer dann andere spalte

    hallo forum,

    meine frage ist, wie ich eine abfrage schreibe, die wenn die betreffende spalte leer ist auf eine andere zugreift.

    ich brauche das, weil ich eine mehrsprachige seite anlegen will, wo der inhalt einer sprache in einer spalte steht. da aber noch nicht alle seiten in allen sprachen vorliegen, will ich eine art hierachie einfuehren. wenn die landessprache leer ist, dann soll er auf englisch zurueckgreifen, nur nicht in deutsch, da hier alles eingepflegt ist.

    wie kann ich das realisieren
    hat jemand da eine idee bei der sql abfrage oder einen anderen loesungsweg

    besten dank

  • #2
    tabellenstruktur?


    ganz allgemein:
    http://www.mysql.com/doc/de/Control_flow_functions.html
    gleich das erste (IFNULL) sollte dir weiterhelfen)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      meinst du, dass die tabellenstruktur sch.... ist?

      ich bin auch damit nicht zufrieden, aber ich weiss momtentan nicht wie ich es anders aufbauen soll?

      Kommentar


      • #4
        mrhappiness meinte damit wohl nicht, dass deine Tabellenstruktur sch... ist!
        Denn die geht aus deinem Posting ja gar nicht hervor.

        Er meint ganz einfach damit, dass du dich mit dem SELECT und der Funktion IFNULL mal etwas auseinander setzen solltest.
        if ($getraenk=="kein kaffee mehr da" && $verlangen=="gross") { $arbeitsmoral="im keller"; }

        Kommentar


        • #5
          damit schlag ich mich ja auch schon herum, meinte nur, falls ich den falschen weg einschlage und es einfacher mit einer anderen tabellenstruktur wäre, ich rechtzeitig gewarnt werde.


          und jetzt die struktur (dachte es geht aus der erklärung hervor):

          id| text_d | text_e | text_nl | text_pl | usw.
          ----------------------------------------------------------
          1 |d_inhalt| e_inhalt|            | pl_inhalt
          2 |d_inhalt|e_inhalt |nl_inhalt|

          wenn jetzt einer als sprache nl ausgewählt hat und id 1 aufgerufen wird,
          hier aber ja nicht drin steht, er dann sich dafür e_inhalt holt.

          Kommentar


          • #6
            tabellen:
            Code:
            CREATE TABLE sprache (
              sprach_id int(11) NOT NULL auto_increment,
              sprache varchar(20) default NULL,
              PRIMARY KEY  (sprach_id)
            ) TYPE=MyISAM;
            
            INSERT INTO sprache VALUES (1, 'deutsch');
            INSERT INTO sprache VALUES (2, 'english');
            INSERT INTO sprache VALUES (3, 'francais');
            
            CREATE TABLE begriff (
              begriff_id int(11) NOT NULL default '0',
              sprach_id int(11) NOT NULL default '0',
              begriff varchar(20) default NULL,
              PRIMARY KEY  (begriff_id,sprach_id)
            ) TYPE=MyISAM;
            
            INSERT INTO begriff VALUES (1, 1, 'guten tag');
            INSERT INTO begriff VALUES (1, 2, 'hello');
            INSERT INTO begriff VALUES (1, 3, 'bonjour');
            INSERT INTO begriff VALUES (2, 1, 'auto');
            INSERT INTO begriff VALUES (2, 2, 'car');
            abfrage:
            Code:
            SELECT 
            	IFNULL(b.begriff, d.begriff) begriff, 
            	IFNULL(b.begriff_id, d.begriff_id) begriff_id,
            	IF(ISNULL(s.sprach_id), standard.sprache, s.sprache) sprache,
            	IF(ISNULL(s.sprach_id), standard.sprach_id, s.sprach_id) sprach_id
            FROM 
            	sprache standard 
            	INNER  JOIN begriff d USING (sprach_id)  
            		LEFT  JOIN begriff b ON d.begriff_id = b.begriff_id AND b.sprach_id = 3
            			LEFT JOIN sprache s USING (sprach_id)
            WHERE 
            	standard.sprache =  'deutsch'
            du musst nur die id der momentan aktuellen sprache wissen und einsetzen (momentan 3)

            wird der begriff gefunden,wird er gewählt, wenn nicht, dann der deutsche
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar

            Lädt...
            X