wie richtig selecten?
Christoph
- datenbank
Hallo,
ich habe 2 Tabellen. Tabelle A heisst tbl_products und Tabelle B heisst tbl_languages.
Tabelle A ist so ausgebaut:
prod_id, prod_text_de, prod_text_en, prod_text_fr, prod_text_it
1, Testtext,,,
Tabelle B so:
lang_id, lang_name, lang_short
1, Deutsch, de
Ich wollte jetzt ein SELECT Statement aufbauen, dass mir nur die Sprachen aus Tabelle B ausgiebt, wo in der Tabelle A das entsprechende Feld dazu auch ausgefüllt ist. Quasi wenn in prod_text_de was drin steht, soll z.B. nicht mehr Deutsch ausgegeben werden, sondern nur noch Englisch, Französisch und Italienisch.
Doch wie realisier ich sowas? Wenn ich das so schreibe: SELECT * FROM tbl_languages,tbl_products WHERE prod_text_de!='' AND prod_text_en!='' AND prod_text_fr!='' AND prod_text_it!='' dann gibt er mir nichts aus. Auch wenn in prod_text_de ja was drin steht und in den anderen Felder nicht :/
Wer kann mir weiter helfen oder den entscheidenen Tip geben?
Vielen Dank
Grüße Christoph
yo,
diese aussage...
dass mir nur die Sprachen aus Tabelle B ausgiebt, wo in der Tabelle A das entsprechende Feld dazu auch ausgefüllt ist.
...steht im widerspruch zu dieser aussage...
Quasi wenn in prod_text_de was drin steht, soll z.B. nicht mehr Deutsch ausgegeben werden, sondern nur noch Englisch, Französisch und Italienisch.
...es sei den, ich habe es falsch verstanden
und davon mal abgesehen ist dein daten-design ist nicht besonders "glücklich" gewählt. deshalb gibt es auch keine verbindung zwischen deinen beiden tabellen, die join bedingung fehlt quasi.
Ilja
Hallo Ilja,
ok ich weiß, nur wie soll ich denn sonst mein Daten Design lösen? Ich komme nicht auf eine brauchbare Lösung...
Grüße
Christoph
yo,
nur wie soll ich denn sonst mein Daten Design lösen?
in deinem falle sieht es schwer nach drei tabellen aus.
produkte:
produkt_id, produktname, etc
produkt_sprachen:
text, produkt_id_fremdschlüssel, sprachen_kürzel_fremdschlüssel
sprachen:
kürzel, lang
Ilja
Tabelle A ist so ausgebaut:
prod_id, prod_text_de, prod_text_en, prod_text_fr, prod_text_it
1, Testtext,,,Tabelle B so:
lang_id, lang_name, lang_short
1, Deutsch, de
hier läßt sich keine direkte beziehung herstellen.
in den produkten ist die sprache jeweils als weitere spalte definiert.
bei den sprachen steht jede sprache in einer zeile.
du mußt eine der beiden tabellen ändern.
entweder du ordnest die produkte um, z.b.:
prod_id, sprache, prod_text
oder die sprachtabelle spaltenorientiert, was dann auf eine zeile hinausläuft.
de, en, fr, ....
deutsch englisch französisch
nur so kann eine spaltenweise beziehung hergestellt werden.