![]() |
Datenbank: ABS • Version: 5.13 • Zugriff über: ABS Komponenten
Schwierige SQL-Abfrage, oder wie muss ich joinen (left...)?
Ok, die Überschrift ist nicht prickelnd..
Nun mein Problem Ich habe drei Tabellen: WORDS --------------------- WORD_ID INTEGER WORD VARCHAR 1 der 2 eine 3 niemand 4 peter DOCUMENT_WORDS --------------------- DOCUMENT_WORD_ID INTEGER WORD_ID INTEGER DOCUMENT_ID INTEGER 1 1 1 2 3 1 3 4 1 4 2 2 4 1 2 DOCUMENTS --------------------- DOCUMENT_ID INTEGER DOCUMENT_NAME VARCHAR 1 Diplom1.doc 2 Putzplan.doc 3 Tagebuuch.doc Wie muss ich jetzt meine Select-Anweisung formulieren, um die Dokumente anzeigen zu lassen, in denen ALLE Wörter vorkommen, die meiner Suchanfrage entsprechen? Als Beispiel will ich jetzt die Dokumente aufgelistet haben, in denen die Wörter "der" und "eine" vorkommen. Richtig gut wäre es, wenn ich hier noch formulieren könnte, welche Wörter NICHT in einem Dokument enthalten sein dürfen. Ich breche mir hier mit den ganzen left inner... Join-Möglichkeiten die Finger ab, und komme zu keinem vernünftigen Ergebnis. Moin |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Hallo,
select distinct(DOCUMENT_NAME ) from DOCUMENTS join DOCUMENT_WORDS.DOCUMENT_ID = DOCUMENTS.DOCUMENT_ID join WORDS on WORDS.WORD.ID= DOCUMENT_WORDS.WORD_ID where (WORDS.WORD='der') or (WORDS.WORD='eine') zum nicht vorhanden würde ich nen subselect nehmen siehe meine Posting heute zu "delete mit join" Heiko |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Tja, die Suche ist auf jeden Fall gelöst:
SQL-Code:
Jetzt fehlt nur noch die Ausschlussbedingung.
select d.document_name, d.document_id, w.word
from documents as d, document_words as dw left join words as w on dw.word_id=w.word_id where d.document_id=dw.document_id and (w.word='der' or w.word='eine') |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Hallo stifflersmom,
hier mal mein Vorschlag...
SQL-Code:
Gruss
SELECT d.document_name, d.document_id, w.word
FROM documents d INNER JOIN document_words dw ON d.document_id = dw.document_id LEFT JOIN words w ON dw.word_id = w.word_id WHERE w.word IN ('der', 'eine') AND w.word NOT IN ('die', 'das') Thorsten |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Zitat:
|
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Aufbauend auf dem Vorschlag oben:
SQL-Code:
SELECT d.document_name, d.document_id, w.word
FROM documents d INNER JOIN document_words dw ON d.document_id = dw.document_id LEFT JOIN words w ON dw.word_id = w.word_id WHERE w.word IN ('der', 'eine') AND dw.word_id NOT IN (SELECT word_id FROM words WHERE word IN ('die', 'das')) |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
SQL-Code:
das muss eigentlich gehen :gruebel:
SELECT d.document_name, d.document_id, w.word
FROM documents d INNER JOIN document_words dw ON d.document_id = dw.document_id LEFT JOIN words w ON dw.word_id = w.word_id WHERE (w.word IN ('der', 'eine')) AND NOT (w.word IN ('die', 'das')) |
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Zitat:
|
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
es kommen doch sicher Fehlermeldungen wenn du die Abfragen ausführst, kannst du die mal dazuposten wenn was nciht funktioniert?
|
Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
Zitat:
denn es wedren alle Dokumente gefunden in denen entweder das eine oder das andere Wort vorkommt, nicht aber das was eigentlich soll, nämlich das, in dem beide Wörter zu finden sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz