Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Inner join ueber mehrere Tabellen

1 view
Skip to first unread message

Nikolai Onken

unread,
Oct 31, 2007, 11:54:27 AM10/31/07
to
Hallo,

ich habe Probleme folgende Abfrage zu realisieren:

Finde alle Artikel die die SFS_Styles_id 1 AND 2 AND 5 haben und die
die SFS_Instruments_id 3 AND 7 AND 15 AND 213 haben (oder OR).

Die Tabellen sehen wie volgt aus:

SFS_Article (id, name, etc..)
SFS_Article_has_SFS_Styles (SFS_Article_id, SFS_Styles_id)
SFS_Article_has_SFS_Instruments (SFS_Article_id, SFS_Instruments_id)

Mit einer verwandten Tabelle kann ich es mit folgender Abfrage loesen
- wie aber mit mehreren?

SELECT *, COUNT(SFS_LibraryArticle.id) as cnt FROM SFS_LibraryArticle
INNER JOIN SFS_LibraryArticle_has_SFS_Styles as las ON
las.SFS_LibraryArticle_id = SFS_LibraryArticle.id AND
las.SFS_Styles_id IN(1,3)
GROUP BY SFS_LibraryArticle.id HAVING cnt=2

Gruesse,

Nikolai

Nikolai Onken

unread,
Oct 31, 2007, 12:43:19 PM10/31/07
to
Ich habe doch eine Loesung gefunden:

SELECT SFS_LibraryArticle.*, COUNT(lap.SFS_Parameters_id) FROM


SFS_LibraryArticle
INNER JOIN SFS_LibraryArticle_has_SFS_Styles as las ON
las.SFS_LibraryArticle_id = SFS_LibraryArticle.id AND
las.SFS_Styles_id IN(1,3)

INNER JOIN SFS_LibraryArticle_has_SFS_Parameters as lap ON
lap.SFS_LibraryArticle_id = SFS_LibraryArticle.id AND
lap.SFS_Parameters_id IN(1,2)
INNER JOIN SFS_LibraryArticle_has_SFS_Instruments as lai ON
lai.SFS_LibraryArticle_id = SFS_LibraryArticle.id AND
lai.SFS_Instruments_id IN(1)
GROUP BY SFS_LibraryArticle.id HAVING COUNT(DISTINCT
las.SFS_Styles_id) = 2 AND COUNT(DISTINCT lap.SFS_Parameters_id) = 2
AND COUNT(DISTINCT lai. SFS_Instruments_id) = 1

Danke,

Nikolai

Claus Reibenstein

unread,
Oct 31, 2007, 4:04:21 PM10/31/07
to
Nikolai Onken schrieb:

> ich habe Probleme folgende Abfrage zu realisieren:
>
> Finde alle Artikel die die SFS_Styles_id 1 AND 2 AND 5 haben und die
> die SFS_Instruments_id 3 AND 7 AND 15 AND 213 haben (oder OR).

Wohl eher OR, da SFS-Styles wohl niemals mehrere Werte gleichzeitig
haben wird :-)

> Mit einer verwandten Tabelle kann ich es mit folgender Abfrage loesen
> - wie aber mit mehreren?

Mit mehreren JOINs.

Gruß. Claus

0 new messages