PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 zu N Beziehung und AND-Verknüpung mererer Kriterien


rubbeldekatz
05.05.2009, 13:18:04
Ich habe jetzt 2 Stunden gegoogelt und keine Lösung gefunden.
Ich habe eine Tabelle mit Stichworten, die 1:n mit einer Haupttabelle verknüpft ist.

Wenn ich mehrere Stichworte suchen will, dann mache ich das so:
SELECT ta.* FROM ta LEFT JOIN tb ON ta.id=tb.id_a
WHERE tb.stichwort = 'geschichte' OR tb.stichwort = 'politik'
GROUP BY ta.id

Gefunden werden alle Datensätze mit geschichte ODER politik.
Wenn ich nun Datensätze suchen will, die geschichte UND politik als Stichwort haben dann funktioniert das nicht, wenn ich das OR durch ein AND austausche.

Eine Lösung ist das mehrfache Verknüpfen der Stichworttabelle.
SELECT a.* FROM ta AS a
LEFT JOIN tb ON a.id=b.id_a AS b
LEFT JOIN tb ON a.id=c.id_a AS c
WHERE b.stichwort = 'geschichte' AND c.stichwort = 'politik'
GROUP BY a.id


Es muss aber eine einfachere Lösung geben.

Bitte an die Profis... Lasst ich nicht hängen ;)

RubbeDeKatz

vt1816
05.05.2009, 15:54:56
[...]

Gefunden werden alle Datensätze mit geschichte ODER politik.
Wenn ich nun Datensätze suchen will, die geschichte UND politik als Stichwort haben dann funktioniert das nicht, wenn ich das OR durch ein AND austausche.

Können denn überhaupt beide Begriffe in tb.stichwort gleichzeitig vorkommen?

rubbeldekatz
05.05.2009, 16:06:05
nicht in ein und demselben Datensatz.
Es ist ja 1:N

Ich könnte folgendermaßen suchen.

Suche in STICHWORTE nach STICHWORT1 = xx oder STICHWORT2 = yy WOBEI Anzahl von ID gleich 2 ist.

Dann wäre sichergestellt das es zu dem DATENSATZ in tabelle1 ALLE Stichworte in Tabelle 2 gibt.

DokuLeseHemmung
05.05.2009, 16:41:18
Ich sehe immer nur 1:N !
Aber mir deucht, gemeint/gesucht ist N:M.

rubbeldekatz
05.05.2009, 17:24:59
Ich dachte immer wenn es zwei Tabellen gibt und in der zweiten Tabelle beliebig viele Einträge auf einen Datensatz in Tabelle 1 vorhanden sind, dann ist das 1:N

Aber man lernt ja nie aus.

Rubbel

DokuLeseHemmung
05.05.2009, 17:31:16
Jaja, Aber ist es bei dir nicht so:
In jedem TextDatensatz können beliebig viele Stichworte auftreten.
Jedes Stichwort kann in beliebig vielen TextDatensätzen auftauchen.

Es kann also durchaus 34 Artikel mit dem Stichwort "zitrone" geben.
Ein Artikel darf die Stichworte "zitrone", "apfel", "kochen" usw. haben.

Wenn das so ist, dann ist es eine klassische n:m Relation.