Datenbank: ORACLE • Version: 10 • Zugriff über: BDE
SQL Logik ohne Klammersetzung abbilden
Hallo zusammen,
ich habe einen Filter gebastelt wo der Anwender selber Tabellen filtern kann. Er kann die einzelnen Spalten mit AND oder OR verknüpfen nur nicht mit Klammern. Er kann die Werte der Spalten mit >=, =, <>, like, not like, <= abfragen. Wie kann man nun folgenden SQL-String ohne Klammern abbilden:
Delphi-Quellcode:
Gruss
(Uhrzeit >= 21:30 AND Uhrzeit <= 23:59) OR (Uhrzeit >= 00:00 AND Uhrzeit <= 06:00)
Holger |
Re: SQL Logik ohne Klammersetzung abbilden
Gar nicht, da ja die Ergebnisse von logischen Operationen in einen weiteren Vergleich einfliessen
|
Re: SQL Logik ohne Klammersetzung abbilden
Schade. Ich hatte nämlich bisher einfach bei ODER-Verknüpfungen am Anfang und am Ende automatisch eine Klammer gesetzt. Bei dieser Filter-Anfrage klappt dies aber leider so nicht.
|
Re: SQL Logik ohne Klammersetzung abbilden
Ich bin nicht sicher, ob das auch unter SQL gilt, aber AND hat eine stärkere Bindung als OR, so dass die Klammern im Beispiel somit überflüssig sind. Aber das ist wie gesagt keine gesicherte Aussage, da hilft im Notfall nur ausprobieren.
|
Re: SQL Logik ohne Klammersetzung abbilden
Hallo,
Zitat:
Je nachdem, ob und wie oben Klammern stehen, kommt ja was unterschiedliches raus. Heiko |
Re: SQL Logik ohne Klammersetzung abbilden
Wenn mit und ohne Klammern unterschiedliche Ergebnismengen herauskommen, ist meine Vermutung widerlegt. Schade eigentlich :(
|
Re: SQL Logik ohne Klammersetzung abbilden
Mein Filter setzt die Klammer bei der Abfrage so:
Delphi-Quellcode:
Kann man durch austauschen von AND OR <= <> die selbe Logik hinbekommen ?
Uhrzeit >= 21:30 AND (Uhrzeit <= 23:59 OR Uhrzeit >= 00:00) AND Uhrzeit <= 06:00
|
Re: SQL Logik ohne Klammersetzung abbilden
Zitat:
Wenn du herausfinden willst, ob es Nacht ist, reicht
Delphi-Quellcode:
Uhrzeit >= 21:30 OR Uhrzeit <= 06:00
|
Re: SQL Logik ohne Klammersetzung abbilden
Vielen dank. Das hilft mir schon sehr weiter. Das wusste ich gar nicht.
|
Re: SQL Logik ohne Klammersetzung abbilden
würde dir so etwas vllt. weiter helfen:
SQL-Code:
Das ist den Vergleichen mit >= und <= zwar sehr ähnlich aber man kann die Klammerung einfacher steuern!
Tab1.DATEXP BETWEEN TO_DATE('20080101','YYYYMMDD') AND TO_DATE('20090101','YYYYMMDD')
(Bei der definierung durch den Benutzer etwa BETWEEN Anfangsdatum/Endedatum Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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