Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage mit Null Werten (https://www.delphipraxis.net/148131-sql-abfrage-mit-null-werten.html)

renekr 23. Feb 2010 11:23

Datenbank: SQL • Version: 2008 • Zugriff über: ADO

SQL Abfrage mit Null Werten
 
Hallo,

Ich habe ein kleines Problem das ich mittels einer SQL Abfrage gerne beheben möchte.
Ich benötige das Ergebniss in 1 SQL Statement.

Ich habe eine Tabelle wo ich die Spalte "Sprache" abfrage in der Where Klausel.
Aber nun kann es sein das für den Datensatz keine Sprache definiert wurde (also kein Ergebniss) aber dafür in der Spalte Default_Language bei einer anderen Sprache was hinterlegt ist.
Dann möchte ich die Datensätze bekommen wenn die Sprache keine Werte zurück gibt das er dann die Datensätze zurück gibt wo die Default_Language auf True ist.

Also
SQL-Code:
Select * from Test where Spalte a='Test' and activ=1 and lang='Deutsch'
Nun soll er natürlich erst prüfen ob der Datensatz vorhanden ist dann die Abfrage machen
SQL-Code:
Select * from Test where Spalte a='Test' and activ=1 and Default_Language=1
Allerdings in 1 SQL Statement drin.
Habe schon mit IsNull,case usw rumgespielt aber habs nicht hinbekommen.
Mit IsNull kann man ja in der Abfrage einfach andere Werte oder eine andere Spalte hinterlegen, aber ich wil lja nicht nur 1 Spalte neu,sondern den ganzen Datensatz.

Ist das überhaupt möglich so ?

Vielen Dank.

Matze 23. Feb 2010 11:43

Re: SQL Abfrage mit Null Werten
 
Hallo,

vielleicht habe ich dich falsch verstanden. Du meinst nicht zufällig das hier?

SQL-Code:
SELECT * FROM Test
WHERE Spalte = 'Test'
   AND active = 1
   AND (lang = 'Deutsch' OR Default_Language = 1)

Blup 23. Feb 2010 11:54

Re: SQL Abfrage mit Null Werten
 
Wenn wirklich nur ein Datensatz zurückkommen darf z.B. so:
SQL-Code:
Select * from Test where (Spalte a='Test') and (activ=1) and
  ((lang='Deutsch') or
   ((Default_Language=1) and
    ((Select count(id) from Test where (Spalte a='Test') and (activ=1) and (lang='Deutsch')) = 0)))

Sir Rufo 23. Feb 2010 12:08

Re: SQL Abfrage mit Null Werten
 
sowas sollte man doch über eine SP lösen
Code:
sf_translate( 'Test', 'Deutsch' )
liefert dann die Übersetzung zurück

Dann kann man diese Funktion in allen Abfragen schön einbauen.
Vor allem kann man damit auch darauf reagieren, wenn weder 'Deutsch' noch Default_Language einen Datensatz liefert.
Man gibt einfach den String 'Test' zurück.

Der SQL-Server sollte dieses auch performant umsetzen

renekr 23. Feb 2010 12:26

Re: SQL Abfrage mit Null Werten
 
Hi Blup,

Vielen Dank.
Es kann doch so einfach sein :):)
Aber wenn man nicht drauf kommt :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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