Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Volltextsuche (https://www.delphipraxis.net/168953-firebird-volltextsuche.html)

vagtler 21. Jun 2012 09:31

AW: Firebird Volltextsuche
 
Zitat:

Zitat von Morphie (Beitrag 1171884)
[...] Angenommen ich habe in der Index-Tabelle folgendes stehen:
Code:
ID     REFERENZID    FELDNAME    WERT
1      445           NAME1       MÜLLER
1      445           NAME1       HEINZ
Jetzt kann ich nicht einfach mit and verknüpfen, das würde dann ja so aussehen:
Code:
select * from indextabelle where wert like '%MÜLLER%' and wert like '%HEINZ%';
Der Datensatz kann nicht gleichzeitig Müller und Heinz im Feld Wert stehen haben...

Wie man das allerdings sonst umsetzen kann weiß ich auch nicht... :(

Funktioniert vielleicht sowas wie:
Code:
select REFERENZID, LIST(WERT) as WERTE from Index-Tabelle group by REFERENZID where WERTE like '%MÜLLER%' and WERTE like '%HEINZ%'
?

Morphie 21. Jun 2012 09:56

AW: Firebird Volltextsuche
 
Zitat:

Zitat von mkinzler (Beitrag 1171888)
Suchst du wirklich immer im gleichen Feld?

Ja, immer nur im Feld "Wert"

Zitat:

Zitat von vagtler (Beitrag 1171891)
Funktioniert vielleicht sowas wie:
Code:
select REFERENZID, LIST(WERT) as WERTE from Index-Tabelle group by REFERENZID where WERTE like '%MÜLLER%' and WERTE like '%HEINZ%'
?

Jau, das klappt! :-)
Wenn man das jetzt noch mit SIMILAR TO verbinden könnte, wäre ich glücklich :-) Kann man das irgendwie per RegEx realisieren?

himitsu 21. Jun 2012 15:29

AW: Firebird Volltextsuche
 
Zitat:

Zitat von DeddyH (Beitrag 1171879)
Zitat:

SQL-Code:
where 1 = 2

Ist das ein Versehen, oder habe ich die Logik nur nicht durchblickt?

Das hatte ich nur mit koppiert :oops:

Also ich würde das "1 = 2 and" wohl auch entfernen.

nahpets 21. Jun 2012 15:53

AW: Firebird Volltextsuche
 
Hallo und sorry,
Zitat:

Zitat von himitsu (Beitrag 1171941)
Zitat:

Zitat von DeddyH (Beitrag 1171879)
Zitat:

SQL-Code:
where 1 = 2

Ist das ein Versehen, oder habe ich die Logik nur nicht durchblickt?

Das hatte ich nur mit koppiert :oops:

Also ich würde das "1 = 2 and" wohl auch entfernen.

es muss natürlich where 1 = 1 heißen,
dann braucht man bei der Erweiterung der Where-Bedingung nicht prüfen, ob man einen oder mehrere Werte hat, sondern kann das SQL immer um beliebig viele and... erweitern.

Bei Where-Bedingungen mit OR muss es where 1 = 2 heißen, weil dort die Where-Bedingung nicht erfüllt sein darf, sondern nur diie OR-Bedingungen.
Bei AND muss natürlich auch die erste Bedingung zutreffen, daher where 1 = 1.

DeddyH 21. Jun 2012 15:56

AW: Firebird Volltextsuche
 
Den "WHERE-Trick" kannte ich auch schon, war nur verwirrt, da der Code in #2 ja niemals zutreffende Datensätze ermitteln kann.

nahpets 21. Jun 2012 16:17

AW: Firebird Volltextsuche
 
Hallo DeedyH,
Zitat:

Zitat von DeddyH (Beitrag 1171948)
Den "WHERE-Trick" kannte ich auch schon, war nur verwirrt, da der Code in #2 ja niemals zutreffende Datensätze ermitteln kann.

Du hast das ja auch direkt korrekt bemerkt, mir viel das irgendwann diese Nacht ein, dass ich da quatsch geschrieben hatte, bin aber jetzt erst dazu gekommmen, auf den Fehler von mir hinzuweisen :-(

himitsu 21. Jun 2012 16:49

AW: Firebird Volltextsuche
 
Zitat:

Zitat von DeddyH (Beitrag 1171948)
Den "WHERE-Trick" kannte ich auch schon,

Wobei ich bei sowas gerne einfach nur TRUE oder FALSE verwende.

Code:
WHERE TRUE
  AND xxx
  AND yyy
;


WHERE FALSE
  OR xxx
  OR yyy
;

DeddyH 21. Jun 2012 17:24

AW: Firebird Volltextsuche
 
Das kennt AFAIK aber nicht jedes RDBMS.

himitsu 21. Jun 2012 18:14

AW: Firebird Volltextsuche
 
Dann sollten die es langsam mal lernen :roll:

tsteinmaurer 21. Jun 2012 19:07

AW: Firebird Volltextsuche
 
Firebird 3 wird einen Boolean Datentyp haben. Kann bereits mit den Snapshot-Builds ausprobiert werden. :thumb:


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

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