Join, aber nur wenn

Join, aber nur wenn

am 08.08.2006 07:05:13 von Martin Schneider

Hallo!

Ich habe eine Tabelle, die Artikel enthält, u.a. auch einen Artikelpreis.

Jedem Artikel kann eine Gruppe von "Zusatzprodukten" zugewiesen werden.
In dieser Art:

1. Artikel, Zusatzprodukte-Gruppe: 1, Preis 3 EUR
2. Artikel, Zusatzprodukte-Gruppe: 2, Preis 5 EUR
3. Artikel, Zusatzprodukte-Gruppe: 1, Preis 2 EUR

Zusatzprodukte:
1. Zusatzprodukt, Zusatzprodukte-Gruppe: 1, Preis 1 EUR
2. Zusatzprodukt, Zusatzprodukte-Gruppe: 1, Preis 3 EUR

In diesem Beispiel hätten nun Artikel 1+3 zwei mögliche Zusatzprodukte,
Artikel 2 hätte kein mögliches Zusatzprodukt.


Ich möchte nun in einem(!) Query wissen, was der Kunde für ein Artikel
inkl. Zusatzprodukt (es geht immer nur eins) bezahlen muss:
SELECT (artikel.preis + zusatzprodukt.preis)
FROM artikel, zusatzprodukte
WHERE ...[Kunde identifizieren usw] AND artikel.zusatzproduktgruppe =
zusatzprodukte.zusatzproduktgruppe ;

Das geht auch solange, wie dem Artikel ein Zusatzprodukt zugewiesen
wurde. Wenn aber nun jemand den 2. Artikel bestellt, erhält dieser
Select natürlich kein Ergebnis, weil kein Zusatzprodukt im Join passt.

Das kann ich natürlich innerhalb von 2 Abfragen rauskriegen, aber es
wäre schön, wenn ich es in eine Abfrage packen könnte. Geht das mit
MySql 4.0.x?

Viele Grüße

Martin

Re: Join, aber nur wenn

am 08.08.2006 09:04:42 von Helmut Chang

Martin Schneider schrieb:
> Hallo!
>
> Ich habe eine Tabelle, die Artikel enthält, u.a. auch einen Artikelpreis.
>
> Jedem Artikel kann eine Gruppe von "Zusatzprodukten" zugewiesen werden.
> In dieser Art:
>
> 1. Artikel, Zusatzprodukte-Gruppe: 1, Preis 3 EUR
> 2. Artikel, Zusatzprodukte-Gruppe: 2, Preis 5 EUR
> 3. Artikel, Zusatzprodukte-Gruppe: 1, Preis 2 EUR
>
> Zusatzprodukte:
> 1. Zusatzprodukt, Zusatzprodukte-Gruppe: 1, Preis 1 EUR
> 2. Zusatzprodukt, Zusatzprodukte-Gruppe: 1, Preis 3 EUR
>
> In diesem Beispiel hätten nun Artikel 1+3 zwei mögliche Zusatzprodukte,
> Artikel 2 hätte kein mögliches Zusatzprodukt.
>
>
> Ich möchte nun in einem(!) Query wissen, was der Kunde für ein Artikel
> inkl. Zusatzprodukt (es geht immer nur eins) bezahlen muss:

Und welches ist das? Was ist das Kriterium, welches Zusatzprodukt zu
wählen ist?

Ansonsten wäre Stichworte:

LEFT JOIN und CASE.

gruss, heli