![]() |
Datenbank: MSSQL • Version: kA • Zugriff über: ASP
Suche bestimmten SQL Code
Hallo,
ich habe ein Problem, ich soll eine Statistikseite programmieren. Diese wird über ASP generiert und fragt soll eine Microsoft SQL Datenbank abfragen. Ich habe alles soweit fertig, bis auf den SQL Code. Den bekomme ich einfach nicht hin. Und zwar soll er: Die Anzahl aller Einträge aus 5 unterschiedlichen Spalten zusammen addieren. Ich glaube das ist etwas blöd erklärt. Es geht also darum abzufrufen, wieviel Eintrage in einer Datenbank vorhanden sind (aber nur aus diesen 5 Spalten - denn es gibt insgesamt 12). Wie müsste ich sowas machen? Gruß Thomas |
Re: Suche bestimmten SQL Code
Das ganze sollte mit
SQL-Code:
gehen.
SELECT COUNT(*) FROM tablename WHERE klausel
Am besten machst Du 2 Schritte: 1.) Die Select-Abrage, die Dir genau die Datensätze liefert die Du zählen willst 2.) Die Abfrage der Spalten gegen COUNT(*) ersetzen. |
Re: Suche bestimmten SQL Code
Aber darin habe ich doch keine Addition...
Hier bekomme ich doch nur die Anzahl der Einträge. War von mir blöd erklärt. Das sind alles INT Datenbankspalten. Wenn also in der 1. 5 2. 4 3. 1 4. 0 und 5. 10 stehen würde, möchte ich nicht 5 herrausbekommen weil 5 Eingaben "NOT NULL" sind, sondern ich möchte 20 herrausbekommen, weil ich 1. + 2. + 3. + 4. + 5. rechnen will! geht sowas überhaupt? |
Re: Suche bestimmten SQL Code
Mach doch ein berechnendes Feld das die automatisch zusammenaddiert und lies dann einfach das aus
Müsste eigentlich gehen oder? Edit:oder schau mal in der LOCALSQL.hlp nach "arithmetische Operatoren", vielleicht hilft dir das weiter |
Re: Suche bestimmten SQL Code
Zitat:
Was Du willst ist die SUMME der Werte in einer Spalte, und da gibt es die Funktion SUM.
SQL-Code:
SELECT SUM(spaltenname) FROM tablename WHERE klausel
|
Re: Suche bestimmten SQL Code
hmm.. ich glaub ich halt mich doch besser aus solchen Dingen raus bevor ich das nicht besser kann und überlass den Profis das Feld
|
Re: Suche bestimmten SQL Code
Angel: Dein Lösungsansatz ist gar nicht so abwegig. Sollte eine solche Abfrage sehr häufig abgesetzt werden müssen wäre es aller Wahrscheinlichkeit nach performanter eine View anzulegen die genau diesen Wert zurückgibt und dann nur die View abzufragen. Das Ergebnis einer View wird nämlich in aller Regel gecached bis die zugrundeliegenden Daten / Pages invalidiert werden. Eine solche Abfrage wird nicht so lange gecached und demnach häufiger durch die DB neu berechnet.
|
Re: Suche bestimmten SQL Code
Zitat:
|
Re: Suche bestimmten SQL Code
Huch. :oops: Sorry, ich rutsche gerne in Details ab..
Also: Eine View ist eine Art 'virtuelle' Tabelle in einer Datenbank. Diese virtuelle Tabelle ist das Ergebnis einer in die Datenbank eingegebenen Abfrage. Sozusagen eine 'fest verdrahtete' SQL-Abfrage die auf einen Tabellennamen hört. Diese View wird erstmalig generiert wenn Du diese virtuelle Tabelle abfragt. Die Datenbank führt das Statement das hinter dieser Tabelle steht aus und merkt sich das Ergebnis sowie die Stellen wo die Daten herkommen. Diese Ergebnis wird also (im Cache) zwischengespeichert, also gecachet. Bei einer neuen Abfrage dieser View wird also das gemerkte Ergebnis ausgeliefert und es muss nicht neu berechnet werden. Das ganze ist also in der Regel schneller (performanter) als jedes mal die Abfrage selber abzuschicken. Ändern sich nun die Daten in der Datenbank merkt diese das und verwirft (invalidiert) das Zwischenergebnis, so dass die nächste Abfrage neu berechnet und somit wieder gültig (valide) ist. Die normale Abfrage ohne View (besser: deren Ergebnis) wird nicht so lange zwischengespeichert und demnach häufiger neu berechnet, was wieder Performance / Leistung kostet. |
Re: Suche bestimmten SQL Code
:thumb:
|
Re: Suche bestimmten SQL Code
leute, sum und count arbeiten auf zeilen.
im post oben steht was von spalten! also eher so:
Code:
spalten duerfen nicht null sein!
select spalte1+spalte2+spalte3 from tabellen name
|
Re: Suche bestimmten SQL Code
halt mal..
Zitat:
: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. |
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:
Die Daten sehen z.B. so aus ...
ID INT
Link01 INT Link02 INT Link03 INT Link04 INT Link05 INT Link06 INT Link07 INT Link08 INT
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:
Falls definitiv keine NULL Werte vorkommen können, dann kannst du die CASE Verschachtelung auch weglassen.
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 Schöne Grüße, Jens |
Re: Suche bestimmten SQL Code
Moin,
das Problem mit NULL-Werten kann man sehr elegant mit der COALESCE-Funktion umgehen.
SQL-Code:
MfG
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 Thorsten |
Re: Suche bestimmten SQL Code
Zitat:
|
Re: Suche bestimmten SQL Code
Zitat:
SQL-Code:
Gibts da einen Unterschied zwischen isnull und COALESCE :gruebel:
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 |
Re: Suche bestimmten SQL Code
Zitat:
|
Re: Suche bestimmten SQL Code
Wie kommt ihr auf einmal auf eine Quer berechnete Summe?
.oO(Ich liebe klare Fragestellungen ohne Beispiele...) |
Re: Suche bestimmten SQL Code
Zitat:
![]() |
Re: Suche bestimmten SQL Code
Zitat:
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:
ISNULL ersetzt NULL-Ausdrücke durch einen gezielten Ersatzwert.COALESCE(NULL,NULL,NULL,2,3,NULL) --ergibt 2 COALESCE(NULL,NULL,NULL) --ergibt NULL
SQL-Code:
ISNULL(NULL,0) --ergibt 0
ISNULL( 'Egal'+CAST(NULL AS VARCHAR(5)) ,'') --ergibt '' Schöne Grüße, Jens :hi: |
Re: Suche bestimmten SQL Code
Danke Jens :zwinker:
Dann ist IsNull also lediglich ein Spezialfall von Coalesce |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz