AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Abfrage funktioniert nicht so richtig

SQL-Abfrage funktioniert nicht so richtig

Ein Thema von Luckner · begonnen am 24. Aug 2016 · letzter Beitrag vom 25. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2   
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
379 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 16:57
Datenbank: Firebird • Version: 2.1 • Zugriff über: TQuery
Hallo, Habe eine Artikeltabelle in der u.A. folgende Eigenschaften stehe:
ARTNR | ROHWARENR | PRODUKTION | LIEFERMENGE | STATUS |
-----------------------------------------------------------
001 | 1212 | 0 | 0 |produziert |
-----------------------------------------------------------
002 | 1212 | 0 | 0 | Null |
-----------------------------------------------------------
003 | 1212 | 0 | 0 |produziert |

Hoffe, die Tabelle ist lesbar.

Meine Abfrage lautet: select * from ARTIKEL where ROHWARENR = 1212 AND PRODSTATUS <> '+ QuotedStr('produziert') + ' and PRODUKTION = 0 and LIEFERMENGE = 0

Ergebnis wird in einer Tabelle dargestellt. Leider in diesem Fall gar nichts. Wenn, statt 'Null' 'leer' stehen würde, dann funktioniert die Abfrage.
Was mache ich hier falsch.
Danke, Luckner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.802 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:01
select * from ARTIKEL where ROHWARENR = 1212 AND iif( PRODSTATUS is not null, PRODSTATUS, '') <> '''produziert''and PRODUKTION = 0 and LIEFERMENGE = 0;
Markus Kinzler
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.588 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:02
Wenn NULL = '' entspricht, dann sollte es so funktionieren.

select * from ARTIKEL where ROHWARENR = 1212 AND ((PRODSTATUS <> 'produziert') OR (PRODSTATUS IS NULL)) and PRODUKTION = 0 and LIEFERMENGE = 0 .

EDIT: Roter Kasten wo bist du
OK. Den Firebird Dialekt kenne ich jetzt nicht so genau. Habe mich mal an MSSQL angelehnt.

Geändert von Aviator (24. Aug 2016 um 17:05 Uhr)
  Mit Zitat antworten Zitat
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.259 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:04
anstatt <> nehme man: is distinct from
oder halt coalesce(PRODSTATUS, '')

Frank

Hab aber keine Ahnung, was FB 2.1 schon versteht...
Frank Reim
  Mit Zitat antworten Zitat
.Phil

Registriert seit: 19. Sep 2012
5 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:06
Entweder ein ((PRODSTATUS IS NULL OR) OR (PRODSTATUS <> '+ QuotedStr('produziert') + ')) draus machen oder mit ISNULL/COALESCE abfragen, weiß nicht genau was es bei Firebird da gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:07
Mach vielleicht mal ein Trim um das STATUS-Feld. Je nachdem welchen Datentyp die Spalte hat füllt FB gerne den nicht gebrauchten Platz mit Leerzeichen auf, sodass dann in der Tabelle statt
Code:
"produziert"
Code:
"produziert       "
steht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.588 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:09
Mach vielleicht mal ein Trim um das STATUS-Feld. Je nachdem welchen Datentyp die Spalte hat füllt FB gerne den nicht gebrauchten Platz mit Leerzeichen auf, sodass dann in der Tabelle statt
Code:
"produziert"
Code:
"produziert       "
steht.
Er schreibt ja, dass NULL drin steht und nicht "produziert " (mit Leerzeichen).
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:11
Oh hab die Frage falsch verstanden.
Dann gibt es eine einfache Lösung:
Zitat:
select * from ARTIKEL where ROHWARENR = 1212 AND PRODSTATUS is distinct from 'produziert' and PRODUKTION = 0 and LIEFERMENGE = 0
http://www.firebirdsql.org/refdocs/l...-distinct.html
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (24. Aug 2016 um 17:20 Uhr)
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
379 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:23
Danke Euch. Habe den Vorschlag vom Aviator genommen und es funktioniert. Habe nicht gedacht, dass '<> produziert' nicht automatisch 'is Null' einschliesst.

Gruß, Luckner
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: SQL-Abfrage funktioniert nicht so richtig

  Alt 24. Aug 2016, 17:25
Danke Euch. Habe den Vorschlag vom Aviator genommen und es funktioniert. Habe nicht gedacht, dass '<> produziert' nicht automatisch 'is Null' einschliesst.

Gruß, Luckner
Wie gesagt.. "is distinct from" ist genau das was du brauchst. Ein <> was NULL einschließt.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 17:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf