help ik kom er niet uit. ik heb 3 tabellen:
ws_files: tabel met bestanden
ws_keywords: tabel met woorden
ws_keywords_rel: kruistabel - koppelingen tussen bestanden en woorden (veel op veel koppelingen)
voorbeeld:
file 1: "piet" heeft 3 woorden gekoppeld: "auto", "fiets" en "bus"
file 2: "truus" heeft 4 woorden gekoppeld: "fiets", "bus", "brommer", "trein"
file 3: "klaas" heeft 2 woorden gekoppeld: "motor" en "bus"
query: geef alle bestanden die zowel de woorden "fiets" als "bus" bevatten (dus en-en)
resultaten zouden dan moeten zijn: file 1 "piet" en 2 "truus". file 3 niet want die heeft alleen een koppeling naar "bus" en niet naar "fiets".
ik dacht dat ik de oplossing had gevonden, maar dat werkt alleen wanneer er op 2 woorden gezocht wordt, maar niet bij 1 of >2 woorden:
btw: onze server draait mysql 3.23.
ws_files: tabel met bestanden
ws_keywords: tabel met woorden
ws_keywords_rel: kruistabel - koppelingen tussen bestanden en woorden (veel op veel koppelingen)
voorbeeld:
file 1: "piet" heeft 3 woorden gekoppeld: "auto", "fiets" en "bus"
file 2: "truus" heeft 4 woorden gekoppeld: "fiets", "bus", "brommer", "trein"
file 3: "klaas" heeft 2 woorden gekoppeld: "motor" en "bus"
query: geef alle bestanden die zowel de woorden "fiets" als "bus" bevatten (dus en-en)
resultaten zouden dan moeten zijn: file 1 "piet" en 2 "truus". file 3 niet want die heeft alleen een koppeling naar "bus" en niet naar "fiets".
ik dacht dat ik de oplossing had gevonden, maar dat werkt alleen wanneer er op 2 woorden gezocht wordt, maar niet bij 1 of >2 woorden:
SQL:
1
2
3
4
5
6
| SELECT DISTINCT s.source_id FROM ws_files_sources s, ws_lists_rel r1, ws_lists_rel r2 WHERE r1.filesource_id = s.source_id AND r1.listitem_id IN (woord1, woord2) AND r2.listitem_id IN (woord1, woord2) AND r2.filesource_id = r1.filesource_id AND r2.id != r1.id ORDER BY r1.filesource_id |
btw: onze server draait mysql 3.23.
[ Voor 23% gewijzigd door js303 op 15-05-2006 16:41 ]