AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Schwierige SQL-Abfrage, oder wie muss ich joinen (left...)?
Thema durchsuchen
Ansicht
Themen-Optionen

Schwierige SQL-Abfrage, oder wie muss ich joinen (left...)?

Ein Thema von stifflersmom · begonnen am 10. Mai 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 2 von 2     12   
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

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

  Alt 11. Mai 2007, 13:45
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.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#12

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

  Alt 11. Mai 2007, 13:57
dann mach doch mal aus dem OR ein AND...
und dann noch meine Ausschlussbedingung dazu, das sollte dann passen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#13

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

  Alt 11. Mai 2007, 14:02
Zitat von Phoenix:
dann mach doch mal aus dem OR ein AND...
aber ein word kann nicht gleichzeitig zwei werte haben
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

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

  Alt 11. Mai 2007, 14:04
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.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#15

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

  Alt 11. Mai 2007, 14:29
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='deror
  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.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#16

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

  Alt 11. Mai 2007, 14:38
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

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

  Alt 11. Mai 2007, 16:37
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='deror
  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
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

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

  Alt 11. Mai 2007, 16:42
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz