AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Logik ohne Klammersetzung abbilden

SQL Logik ohne Klammersetzung abbilden

Ein Thema von HolgerCW · begonnen am 15. Apr 2010 · letzter Beitrag vom 15. Apr 2010
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:05
Datenbank: ORACLE • Version: 10 • Zugriff über: BDE
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:

(Uhrzeit >= 21:30 AND Uhrzeit <= 23:59) OR (Uhrzeit >= 00:00 AND Uhrzeit <= 06:00) Gruss

Holger
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:12
Gar nicht, da ja die Ergebnisse von logischen Operationen in einen weiteren Vergleich einfliessen
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:29
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:41
Hallo,

Zitat:
Ich bin nicht sicher, ob das auch unter SQL gilt, aber AND hat eine stärkere Bindung als OR
In SQL gibt es (afaik) nicht.

Je nachdem, ob und wie oben Klammern stehen,
kommt ja was unterschiedliches raus.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:44
Wenn mit und ohne Klammern unterschiedliche Ergebnismengen herauskommen, ist meine Vermutung widerlegt. Schade eigentlich
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 11:48
Mein Filter setzt die Klammer bei der Abfrage so:

Uhrzeit >= 21:30 AND (Uhrzeit <= 23:59 OR Uhrzeit >= 00:00) AND Uhrzeit <= 06:00 Kann man durch austauschen von AND OR <= <> die selbe Logik hinbekommen ?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#8

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 12:04
Zitat von HolgerCW:
Uhrzeit >= 21:30 AND (Uhrzeit <= 23:59 OR Uhrzeit >= 00:00) AND Uhrzeit <= 06:00
Da kommt aber was anderes heraus als im ersten Beispiel. Genauer gesagt ist das Ergebnis immer False. Allein die beiden äußeren Bedingungen können nicht gleichzeitig wahr sein (vorausgesetzt Uhrzeit bewegt sich im Bereich 00:00 - 23:59, was anderes wäre ja auch gar nicht definiert).

Wenn du herausfinden willst, ob es Nacht ist, reicht

Uhrzeit >= 21:30 OR Uhrzeit <= 06:00
Uwe Raabe
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#9

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 12:52
Vielen dank. Das hilft mir schon sehr weiter. Das wusste ich gar nicht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: SQL Logik ohne Klammersetzung abbilden

  Alt 15. Apr 2010, 16:38
würde dir so etwas vllt. weiter helfen:
Tab1.DATEXP BETWEEN TO_DATE('20080101','YYYYMMDD') AND TO_DATE('20090101','YYYYMMDD') Das ist den Vergleichen mit >= und <= zwar sehr ähnlich aber man kann die Klammerung einfacher steuern!
(Bei der definierung durch den Benutzer etwa BETWEEN Anfangsdatum/Endedatum

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:56 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