Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit komplexer Abfrage

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte eine Übersicht von Zugriffen verschiedener Kunden nach Monaten auswerten.

Ich habe in meiner DB folgende Tabellen:

shoplogin:

uid | kundenname | username | passwort

shopzugriff:

uid | zugriffsdatum

Ich möchte jetzt eine Webseite generieren mit der ich alle Kunden auswerten möchte:

Kunde: xyz

------------

Monat | Anzahl Zugriffe

------------------------------------------

januar 2004 33

...

Kunde abc

--------------------

Monat | Anzahl Zugriffe

------------------------------------------

januar 2004 66

...

Ich habe es aber nicht geschafft eine solche Struktur zu bekommen.

Möchte dies dann mit ASP generieren.

Bitte um Hilfe!!

Gruss Dirk

Wenn du eine Tabelle haben willst, welche die Daten für eine eigene Formatierung sammelt, dann versuch's mal mit:

-- temporäre Tabelle als Übersicht

SELECT

	sl.[kundenname],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 1 AND sl.uid = uid) AS [Januar],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 2 AND sl.uid = uid) AS [Februar],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 3 AND sl.uid = uid) AS [März],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 4 AND sl.uid = uid) AS [April],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 5 AND sl.uid = uid) AS [Mai],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 6 AND sl.uid = uid) AS [Juni],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 7 AND sl.uid = uid) AS [Juli],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 8 AND sl.uid = uid) AS [August],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 9 AND sl.uid = uid) AS [September],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 10 AND sl.uid = uid) AS [Oktober],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 11 AND sl.uid = uid) AS [November],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 12 AND sl.uid = uid) AS [Dezember],

	(SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE sl.uid = uid) AS [Gesamt]

FROM 

	shoplogin AS sl

-- Wenn das Jahr uninteressant ist, können alle Zeilen ab hier entfernt werden

		INNER JOIN

	shopzugriff AS sz

		ON

	sl.uid = sz.uid

WHERE

	DATEPART(year, sz.zugriffsdatum) = 2004 -- das Jahr kann geändert werden
Die von dir gewünschte Ausgabe kann mit dem folgenden script erreicht werden:
DECLARE @kundenname VARCHAR(25)

DECLARE @uid INT

DECLARE @count INT

DECLARE @datum DATETIME

DECLARE @jahr INT

SET @jahr = 2004 -- !!! hier das gewünschte Jahr eintragen !!!

DECLARE kunden CURSOR SCROLL

FOR SELECT uid, kundenname

FROM shoplogin

OPEN kunden

FETCH NEXT FROM kunden

INTO @uid, @kundenname

SET @datum = '01/01/'+CAST(@jahr AS char(4))

WHILE @@FETCH_STATUS = 0

BEGIN

SELECT @count = COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = DATEPART(month, @datum) 

AND DATEPART(year, zugriffsdatum) = DATEPART(year, @datum) AND uid = @uid

--IF @count > 0 -- !!! diese Zeile aktivieren, wenn nur Ausgaben für Zugriffe interessant sind !!!

BEGIN

	PRINT ''

	PRINT ''

	PRINT 'Kunde: ' + @kundenname

	PRINT '------------------'

	PRINT ''

	PRINT 'Monat | Anzahl Zugriffe'

	PRINT '-----------------------'

	PRINT DATENAME(month, @datum) + ' ' + DATENAME(year, @datum) + ' ' + CAST(@count AS varchar(10))

END

	FETCH NEXT FROM kunden

	INTO @uid, @kundenname

	IF @@FETCH_STATUS <> 0

	BEGIN

		SET @datum = DATEADD(month, 1, @datum)

		IF DATEPART(year, @datum) <> @jahr

		BEGIN BREAK END

		FETCH FIRST FROM kunden

		INTO @uid, @kundenname

	END 

END

CLOSE kunden

DEALLOCATE kunden

IN NO EVENT SHALL just_me BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF SCRIPTS, DOCUMENTS, PROVISION OF OR FAILURE TO PROVIDE SERVICES, OR INFORMATION AVAILABLE FROM HIM.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.