perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 23:03

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Rund um das Thema Datenbank zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragSQL Problem
Seitenanfang
Hallo,

ich habe ein Problem mit SQL ...
Ich habe folgende Tabellenstruktur in MySQL:

Tabelle "Produkte"

-----------
id | titel
-----------
1 | AAA
2 | BBB
3 | CCC
-----------

Tabelle "merkmal1"

-----------
id | titel
-----------
1 | rot
2 | blau
3 | gelb
------------

Tabelle "merkmal2"

-----------
id | titel
-----------
1 | a
2 | b
3 | c
------------

Tabelle "merkmal3"

-----------
id | titel
-----------
1 | 12
2 | 14
3 | 16
------------


Dann habe ich noch drei Kreuztabellen um mehrere Merkmale einen einem Produkt zuzuweisen zu können.

Tabelle "merkmal1_produkte"

-------------------------
produkt_id | merkmal1_id
-------------------------
1 | 2
1 | 3
2 | 2
-------------------------

Tabelle "merkmal2_produkte"

-------------------------
produkt_id | merkmal2_id
-------------------------
3 | 2
-------------------------

Tabelle "merkmal3_produkte"

-------------------------
produkt_id | merkmal3_id
-------------------------
1 | 1
3 | 2
2 | 1
2 | 3
-------------------------


Demnach sind z.B. dem Produkt BBB die folgenden Merkmale zugeordnet:

BBB => blau
=> 14 + 16

Soweit so gut .. nun habe ich aber ein Problem, wenn ich eine Suche danach absetzten möchte. Die Suche soll über die Felder

a) Merkmal1
b) Merkmal2
c) merkmal3

die als Auswahlmenü dargestellt sind ausgeführt werden. Wenn ich nun beliebig die Merkmale mixen möchte, dann verstehe ich jetzt nicht, wie ich das SQL gestalten muss. Ich denke über einen JOIN? Kann mir dabei jemand helfen? Wenn möglicht mit einer kurzen Erklärung.

Vielen Dank.

Martin

Datum: 14.11.2005-17:39

Beitragre: SQL Problem
Seitenanfang
Hallo,

wenn ich es richtig vertanden habe, willst Du die Produkte selektieren, die dem angegebenen Merkmalmix entsprechen ?!?

d.h. die Joins müssen folgende Reihe abbilden:

MerkmalTab->KreuzTab->ProduktTab

d.h. für das erste Merkmal:

select p.titel from produkt p, merkmal1_produkte k1, merkmal1 m1
where p.id = k1.produkt_id
and k1.merkmal_id = m1.id
and m1.titel = 'Merkmalswert aus Webauswahl' ;

PS: die Where-Bedingungen als Verknüpfung der einzelnen Tabellen stellen die Joins dar...

Für die anderen Merkmalgruppen m2, m3 etc. müssen die from und where-klauseln entsprechend erweitert werden (je nachdem mit 'and' oder 'or' ) wie halt die Auswahl aussehen soll...

Falls das nicht reicht, kann ich Dir gerne mal ein komplettes SQL-Statemanet dazu aufschreiben.

Gruß Ralf

Datum: 14.11.2005-21:04

Beitragre: SQL Problem
Seitenanfang
Hallo Ralf,

danke für die schnell Antwort! Für die einzelnen Merkmale hab ich das soweit kapiert. Nur eine Kombination aller als logisches UND klappt noch nicht so recht. Evtl. hast Du dazu ne Lösung parat ;o)

Danke schon mal!

Martin

Datum: 15.11.2005-16:09

Beitragre: SQL Problem
Seitenanfang
select p.titel
from
Produkte p,
merkmal1 m1,
merkmal2 m2,
merkmal3 m3,
merkmal1_produkte k1,
merkmal2_produkte k2,
merkmal3_produkte k3
where (

-- für Merkmal 1 --
(
p.id = k1.produkt_id
and
k1.merkmal_id = m1.id
and
m1.titel = 'Suchwert von Merkmal 1 aus WebForm'
)
and
-- für Merkmal 2 --
(
p.id = k2.produkt_id
and
k2.merkmal_id = m2.id
and
m2.titel = 'Suchwert von Merkmal 2 aus WebForm'
)
and
-- für Merkmal 3 --
(
p.id = k3.produkt_id
and
k3.merkmal_id = m3.id
and
m3.titel = 'Suchwert von Merkmal 3 aus WebForm'
)

)
-----------------------------------------

Gruß Ralf

Datum: 16.11.2005-08:49

-






-
-