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.
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.