Problem bei SQL-Abfrage

Problem bei SQL-Abfrage

am 06.10.2006 15:09:18 von svens

Hallo,

mit meinen SQL-Kenntnissen komme ich nicht mehr weiter. Vielleicht kann
mir jemand weiterhelfen.

Ausgangslage ist eine mysql-db (4.0) die 3 Tabellen enthält.

In der ersten sind Produkte gespeichert (id, bezeichnung, ...), in der
zweiten sind Bestandteile für diese Produkte gespeichert (id,
bezeichnung ...), in der 3. Tabelle werden die Bestandteile den
Produkten zugewiesen (id, id_produkte, id_bestandteile).

Jetzt möchte ich eine Abfrage erstellen um herauszufinden welche
Produkte gleichzeitig zum Beispiel aus Bestandteil x und Bestandteil y
bestehen.

Wie muss die Abfrage dafür aussehen?

Vielen Dank für Eure Hilfe!

Re: Problem bei SQL-Abfrage

am 06.10.2006 15:24:55 von Kai Ruhnau

svens@balcab.ch wrote:
^^^^^^^^^^^^^^^

Bitte trage deinen richtigen Namen in deinem Newsreader ein, das erhöht
die Wahrscheinlichkeit, dass dir Leute antworten wollen.

> mit meinen SQL-Kenntnissen komme ich nicht mehr weiter. Vielleicht kann
> mir jemand weiterhelfen.
>
> Ausgangslage ist eine mysql-db (4.0) die 3 Tabellen enthält.
>
> In der ersten sind Produkte gespeichert (id, bezeichnung, ...), in der
> zweiten sind Bestandteile für diese Produkte gespeichert (id,
> bezeichnung ...), in der 3. Tabelle werden die Bestandteile den
> Produkten zugewiesen (id, id_produkte, id_bestandteile).
>
> Jetzt möchte ich eine Abfrage erstellen um herauszufinden welche
> Produkte gleichzeitig zum Beispiel aus Bestandteil x und Bestandteil y
> bestehen.

Möglichkeit a)

Du JOINst zweimal (n-mal) in die Verknüpfungstabelle für jede
Verknüpfung, die du überprüfen möchtest.

SELECT...
INNER JOIN bla AS bestand1 ON ...
INNER JOIN bla as besatnd2 ON ...
....

Möglichkeit b)

Du JOINst einmal in die Verknüpfungstabelle und nimmst als Bedingung die
zwei (oder n) IDs der Bestandteile. Dann gruppierst du über die Produkte
und zählst, ob die Anzahl der Bestandteile stimmt.

SELECT product_id, COUNT(*) AS anzahl, ...
INNER JOIN blah ON ...
WHERE blah.id_bestandteile IN (...)
GROUP BY 1
HAVING anzahl=...


Grüße
Kai

Re: Problem bei SQL-Abfrage

am 06.10.2006 17:10:26 von svens

Danke für Eure Antworten. Es hat geklappt!