MySQL Forums
Forum List  »  German

left join mit case?
Posted by: jens ubert
Date: October 13, 2010 10:55AM

Hallo Forum,

ich möchte folgende Aufgabe (vereinfacht) lösen:

Folgende Daten stehen zur Verfügung:

Produkt:
------------------------------------------
Hagebuttentee mit der produkt_id=3

Produkttexte:
Variante0:
produkt_bezeichnung: hagebuttentee
produkt_beschreibung: hagebuttentee tut gut

Variante2:
produkt_bezeichnung: Tee von der Hagebutte
produkt_beschreibung: hagebuttentee schmeckt nicht gut

Produkt:
------------------------------------------
Schokolade mit der produkt_id=5

Produkttexte:
Variante0:
produkt_bezeichnung: Schokolade
produkt_beschreibung: Diese Schokolade ist die beste

Variante2:
--> hat dieses Produkt nicht

Jeden Produkt (PRODUKTTTAB) sind in einer Textabelle (PRODUKTTEXTTAB) sind entsprechende Texte zugeordnet. Normalerweise mit einer sprach_id so abrufbar:

select * PRODUKTTAB
left join PRODUKTTEXTTAB on PRODUKTTEXTTAB.produkt_id = PRODUKTTAB.id_produkt and PRODUKTTEXTTAB.sprach_id = $var_irgendeinesprach_id
group by PRODUKTTAB.produkt

Jetzt möchte ich aber auch noch verschiendene "Textvarianten" (a la obiges Beispiel mit tee und Schoki) abrufen. dh.: jedem Produkt und Sprache könne auch noch verschiedene Textvarianten zugeordnet werden ... von denen je nach mitgegebenen Parameter der entsprechende ausgewählt wird.
Das ist dann so abrufbar:

select * PRODUKTTAB
left join PRODUKTTEXTTAB on PRODUKTTEXTTAB.produkt_id = PRODUKTTAB.id_produkt and PRODUKTTEXTTAB.sprach_id = $var_irgendeinesprach_id and PRODUKTTEXTTAB.variante_id = $var_variante_id
group by PRODUKTTAB.produkt

... jetzt aber das eigentliche Problem:

Bei der Varianten-Administration ist bestimmt, dass es immer einen Produkt-Text gibt mit der Variante 0. Zu manchen Produkten gibt es aber auch Produkttexte z.B. der Variante 2. Wenn nun die Produktliste abgerufen wird mit der Vorgabe für Textvariante2, dann soll, wenn es keine Textvariante2 gibt auf die Textvariante0 zurückgegriffen werden..

auf das Tee-Schoki Beispiel bezogen:

wenn ich dem statement mitgebe, dass es variante2 arbeiten soll (Auflistung der Produkte mit texten der Variante2), dann ermittelt es beim Hagebuttentee die Bezeichnung: Tee von der Hagebutte und bei der Schokolade, obwohl keine Variante2 vorhanden: Schokolade, also die Bezeichnung der Variante0 ... das wäre das Ziel.




PRODUKTTAB mit den Spalten
id_produkt
hersteller_id


PRODUKTTEXTTAB mit den Spalten
id_produkttext
produkt_id
sprach_id
variante_id
produkt_bezeichnung
produkt_beschreibung



Vielen Dank für einen Ansatz.

Options: ReplyQuote


Subject
Views
Written By
Posted
left join mit case?
2233
October 13, 2010 10:55AM
2158
October 13, 2010 12:00PM
1397
October 13, 2010 12:37PM
1357
October 13, 2010 12:59PM
1282
October 13, 2010 01:09PM
1100
October 13, 2010 01:22PM
1137
October 13, 2010 02:51PM
1043
October 14, 2010 03:49AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.