Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Schwierige SQL-Abfrage, oder wie muss ich joinen (left...)? (https://www.delphipraxis.net/91834-schwierige-sql-abfrage-oder-wie-muss-ich-joinen-left.html)

stifflersmom 11. Mai 2007 13:45

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Zitat:

Zitat von Angel4585
es kommen doch sicher Fehlermeldungen wenn du die Abfragen ausführst, kannst du die mal dazuposten wenn was nciht funktioniert?

nein, Fehlermeldung gibt es keine,
nur das Ergebnis ist nicht so wie gewünscht.

Phoenix 11. Mai 2007 13:57

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
dann mach doch mal aus dem OR ein AND...
und dann noch meine Ausschlussbedingung dazu, das sollte dann passen.

Angel4585 11. Mai 2007 14:02

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Zitat:

Zitat von Phoenix
dann mach doch mal aus dem OR ein AND...

aber ein word kann nicht gleichzeitig zwei werte haben ;)

stifflersmom 11. Mai 2007 14:04

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Zitat:

Zitat von Phoenix
dann mach doch mal aus dem OR ein AND...
und dann noch meine Ausschlussbedingung dazu, das sollte dann passen.

Das ist ja ein teil des Problems,
mache ich aus dem OR ein AND, dann kommt
gar kein Ergebnis mehr raus.
Jedenfalls nicht mit den Abfragen, wie sie bis
jetzt hier stehen.

mquadrat 11. Mai 2007 14:29

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Erster Gedanke (keinen Schimmer, ob die Laufzeit erträglich ist)

SQL-Code:
select d.document_name, d.document_id
from documents as d
  join document_words as dw on d.document_id = dw.document_id
  join words join words as w on dw.word_id = w.word_id
where
  w.word='der' or
  w.word='eine'
group by d.document_name, d.document_id
having count(*) = 2
Die Zahl muss halt gleich der Anzahl der gesuchten Worte sein. Die Query gibt alle gefunden Kombinationen zurück und das having schmeißt alle Dokumente raus, die nur einen Teil der Wörter enthalten.

Angel4585 11. Mai 2007 14:38

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
SQL-Code:

select d.document_name, d.document_id from documents as d
where
(select count(*) from document_words as dw left outer 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"))>="2"
so vielleicht?

ich gehe dabei davon aus das nich zweimal das Wort "eine" bei document 1 ist, sondern jedes Wort pro Dokument nur einmal aufgeführt wird

stifflersmom 11. Mai 2007 16:37

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Zitat:

Zitat von mquadrat
Erster Gedanke (keinen Schimmer, ob die Laufzeit erträglich ist)

SQL-Code:
select d.document_name, d.document_id
from documents as d
  join document_words as dw on d.document_id = dw.document_id
  join words join words as w on dw.word_id = w.word_id
where
  w.word='der' or
  w.word='eine'
group by d.document_name, d.document_id
having count(*) = 2
Die Zahl muss halt gleich der Anzahl der gesuchten Worte sein. Die Query gibt alle gefunden Kombinationen zurück und das having schmeißt alle Dokumente raus, die nur einen Teil der Wörter enthalten.

ein Join Words Zuviel,
aber funktioniert soweit,
fehlt nur noch die Ausschlussbedingung zu meinem Glück

stifflersmom 11. Mai 2007 16:42

Re: Schwierige SQL-Abfrage, oder wie muss ich joinen (left..
 
Zitat:

Zitat von Angel4585
SQL-Code:

select d.document_name, d.document_id from documents as d
where
(select count(*) from document_words as dw left outer 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"))>="2"
so vielleicht?

ich gehe dabei davon aus das nich zweimal das Wort "eine" bei document 1 ist, sondern jedes Wort pro Dokument nur einmal aufgeführt wird

Ja, funktioniert und es ist tatsächlich so, dass ein Wort immer nur einmal pro Dokument zugeordnet wird.
Allerdings fehlt auch hier zu meinem vollkommenen Glück, die Ausschlussbedingung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Seite 2 von 2     12   

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