Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suche bestimmten SQL Code (https://www.delphipraxis.net/55886-suche-bestimmten-sql-code.html)

generic 28. Okt 2005 12:56

Re: Suche bestimmten SQL Code
 
leute, sum und count arbeiten auf zeilen.

im post oben steht was von spalten!

also eher so:
Code:
select spalte1+spalte2+spalte3 from tabellen name
spalten duerfen nicht null sein!

Angel4585 28. Okt 2005 13:04

Re: Suche bestimmten SQL Code
 
halt mal..

Zitat:

Das sind alles INT Datenbankspalten.
1.Spalte,2.Spalte ..
:warn: Spalte ist von oben nach unten

und er will jetzt die Werte der Spalten in EINER Zeile zusammenaddieren.

stimmt doch alles was wir hier gesagt haben.

Edit: Habs grad nochmal gelesen... Jetzt hab ich das nochmal anders verstanden:
in der ersten Spalte sind z.B. 5 Zeilen(Einträge)
in der zweiten Spalte sind 3 Zeilen(Einträge)

jetzt will er 8 als ergebnis, also die anzahl an einträgen. Geht das? es sind doch eigentlich immer gleich viele Zeilen oder? nur das irgendwo vielleicht nichts drin steht.

jensw_2000 29. Okt 2005 00:58

Re: Suche bestimmten SQL Code
 
Schön wäre es, wenn ich jetzt den Aufbau der besagten Tabelle kennen würde. Dann müsste ich mir nichts aus den Fingern saugen und du bräuchtest es nicht nochmal übersetzen ...

Angenommen deine Tabelle "Counters" hat den folgenden Aufbau

SQL-Code:
ID      INT
Link01   INT
Link02   INT
Link03   INT
Link04   INT
Link05   INT
Link06   INT
Link07   INT
Link08   INT
Die Daten sehen z.B. so aus ...

SQL-Code:
ID   Link01 Link02 Link03 Link04 Link05 Link06 Link07 Link08 KlicksGesamt
-------------------------------------------------------------------------------
0     NULL  NULL  3      NULL  4      NULL  NULL  NULL     -- ?? << suchst du dafür was ?
1     1      NULL  NULL  NULL  5      1      NULL  NULL
2     NULL  2      5      12     NULL  NULL  2      8

... und du möchtest generell wissen, wieviele Links bei einem Besuch geklickt wurden, dann würd auch das auch über ein berechnetes Feld lösen. Jedoch am besten über eine kleine Hilfsfunktion die ich dann anstatt des direkten Codes aufrufe ...

Eine einzelne Abfrage könnte in etwa so aussehen ...
SQL-Code:
SELECT     CASE WHEN Link02 IS NOT NULL
                 THEN Link02
                 ELSE 0
            END
            +
            CASE WHEN Link03 IS NOT NULL
                 THEN Link03
                 ELSE 0
            END
            +
            CASE WHEN Link04 IS NOT NULL
                 THEN Link04
                 ELSE 0
            END
            AS
            [Klicks_auf_Produkte]
           ,
            CASE WHEN Link05 IS NOT NULL
                 THEN Link05
                 ELSE 0
            END
            +
            CASE WHEN Link06 IS NOT NULL
                 THEN Link06
                 ELSE 0
            END
            AS
            [Klicks_auf_Downloads]
FROM Counters
WHERE ID = 1
Falls definitiv keine NULL Werte vorkommen können, dann kannst du die CASE Verschachtelung auch weglassen.

Schöne Grüße,
Jens

omata 29. Okt 2005 01:07

Re: Suche bestimmten SQL Code
 
Moin,

das Problem mit NULL-Werten kann man sehr elegant mit der COALESCE-Funktion umgehen.

SQL-Code:
SELECT COALESCE(Link02, 0) + 
       COALESCE(Link03, 0) +
       COALESCE(Link04, 0) AS [Klicks_auf_Produkte],
       COALESCE(Link05, 0) +
       COALESCE(Link06, 0) AS [Klicks_auf_Downloads]
  FROM Counters
  WHERE ID = 1
MfG
Thorsten

jensw_2000 29. Okt 2005 01:32

Re: Suche bestimmten SQL Code
 
Zitat:

Moin,

das Problem mit NULL-Werten kann man sehr elegant mit der COALESCE-Funktion umgehen.
Stimmt :mrgreen:

Jelly 29. Okt 2005 02:25

Re: Suche bestimmten SQL Code
 
Zitat:

Zitat von omata
das Problem mit NULL-Werten kann man sehr elegant mit der COALESCE-Funktion umgehen.

Oder mit isnull:
SQL-Code:
SELECT isnull(Link02, 0) + 
       isnull(Link03, 0) + 
       isnull(Link04, 0) AS [Klicks_auf_Produkte],
       isnull(Link05, 0) + 
       isnull(Link06, 0) AS [Klicks_auf_Downloads]
  FROM Counters
  WHERE ID = 1
Gibts da einen Unterschied zwischen isnull und COALESCE :gruebel:

Luckie 29. Okt 2005 06:45

Re: Suche bestimmten SQL Code
 
Zitat:

Zitat von Jelly
Gibts da einen Unterschied zwischen isnull und COALESCE :gruebel:

Das erstere läßt sich auf alle Fälle aussprechen ohne sich die Zunge zu verdrehen. ;) :duck:

Phoenix 29. Okt 2005 07:08

Re: Suche bestimmten SQL Code
 
Wie kommt ihr auf einmal auf eine Quer berechnete Summe?

.oO(Ich liebe klare Fragestellungen ohne Beispiele...)

jensw_2000 29. Okt 2005 08:16

Re: Suche bestimmten SQL Code
 
Zitat:

Zitat von Phoenix
Wie kommt ihr auf einmal auf eine Quer berechnete Summe?

.oO(Ich liebe klare Fragestellungen ohne Beispiele...)

:arrow: Erst verwirrend aber doch klar oder ?

jensw_2000 29. Okt 2005 09:18

Re: Suche bestimmten SQL Code
 
Zitat:

Zitat von Jelly
Gibts da einen Unterschied zwischen isnull und COALESCE :gruebel:

Jepp,

COALESCE gibe den ersten Wert einer Liste zurück, der nicht NULL ist. Wenn alle Werte NULL sind ist das Ergebnis egenfalls NULL.

SQL-Code:
 
COALESCE(NULL,NULL,NULL,2,3,NULL) --ergibt 2
COALESCE(NULL,NULL,NULL) --ergibt NULL
ISNULL ersetzt NULL-Ausdrücke durch einen gezielten Ersatzwert.

SQL-Code:
ISNULL(NULL,0) --ergibt 0
ISNULL( 'Egal'+CAST(NULL AS VARCHAR(5)) ,'') --ergibt ''

Schöne Grüße,
Jens
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Seite 2 von 3     12 3      

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