Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

rito
***
Beiträge: 54
Registriert: Do, 05.07.2007 10:17

Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von rito »

Hallo, ich mal wieder :D
immer wieder stoße ich auf Grenzen, die ich auch bei langer Recherche nicth lösen kann. Ich habe eine Abfrage entworfen, die alle Besuche bestimmter Personen innerhalb der letzten zwei Monaten auflistet. Das ist zwar schön, doch war es nicht ganz meine Absicht. Ich hätte gerne eine Abfrage die alle personen mit der Anzahl ALLER ihrer Besuche auflistet (auch die Besuche die länger als 2 Monate zurückliegen), wenn sie innerhalb der letzten 2 Monate diesen Ort aufgesucht haben. Alle Personen, die länger als 2 Monate diesen Ort nicht mehr aufgesucht haben, sollen nicht mehr in der Liste erscheinen.

So habe ich es bis jetzt geschafft :)

Code: Alles auswählen

SELECT "Nachname", "Vorname", "Personenkreis", "Datum", COUNT( * ) AS "Besuche" FROM "Tagebuch" AS "Tagebuch" WHERE datediff('mm', "Datum", current_date) < 2 GROUP BY "Nachname", "Vorname", "Personenkreis", "Datum" ORDER BY "Besuche" DESC
Vielen Dank für eure Mühen
rito
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von Barlee »

Hallo rito,

zerlege Dir die Aufgabe.
Zusätzlich zu der ersten, von Dir bereits erstellten, Abfrage benötigst Du jetzt nur noch ein COUNT(*), gruppiert über "Nachname", "Vorname", "Personenkreis"
Anschließend joinst Du beide Ergebnistabellen über ein gemeinsames Attribut (Primärschlüssel) zusammen. "Nachname", "Vorname" bieten sich allerdings hierfür nicht an, da nicht eindeutig.

Also nach diesem Muster:

Code: Alles auswählen

SELECT * FROM
( Deine_bisherige_Abfrage) AS Tab_A,
( Hier die Abfrage mit dem COUNT(*) ) AS TAB_B
WHERE Tab_A.ID = Tab_B.ID
Gruß Barlee
rito
***
Beiträge: 54
Registriert: Do, 05.07.2007 10:17

Re: Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von rito »

Vielen Dank für deine Antwort, doch das mit der Eindeutigkeit und dem Primärschlüssel ist so eine Sache. Es wurde ja keine Personenliste in der Datenbank angelegt, so dass einem Besucher stets die gleiche Nummer zugeordnet wird.

Da habe ich, glaube ich, noch etwas zu knobeln.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von Barlee »

Das heißt, Du hast keinen Primärschlüssel, der die Datensätze in der Tabelle "Tagebuch" eindeutig bezeichnet?

Erstelle doch nachträglich eine neue Spalte, die dieses liefert.
Du müsstest folgendermaßen vorgehen:
-Erstelle eine Tabelle mit exakt den gleichen Spalten wie sie die Tabelle "Tagebuch" hat. ZUSÄTZLICH eine ERSTE SPALTE "ID" vom Typ INTEGER AUTO INCREMENT. Diese Spalte kennzeichnest Du als Primärschlüssel.
-Speichere die (leere) Tabelle in "Tagebuch_1"

Jetzt gehts ans Kopieren der Daten aus der alten Tabelle in die neue.
-Unter Extras/SQL führst Du folgendes aus

Code: Alles auswählen

INSERT INTO "Tagebuch_1" (SELECT NULL,"Spalte1","Spalte2","Spalte3" FROM "Tagebuch")
NULL sorgt dafür, dass die neue Spalte "ID" mit einer laufenden Nummer (Deinem Primärschlüssel) gefüllt wird.
"Spalte1","Spalte2","Spalte3" steht für die Spalten Deiner Tabelle "Tagebuch". Hier führst Du alle in der richtigen Reihenfolge an.

Das Ergebnis ist ein Klon Deiner Ursprungstabelle, erweitert um eine Primärschlüsselspalte.
Versuch's mal. Dann kannst Du die Abfrage wie in meinem vorigen Beispiel aufbauen.

Gruß Barlee
rito
***
Beiträge: 54
Registriert: Do, 05.07.2007 10:17

Re: Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von rito »

Doch doch, ich habe schon einen Primärschlüssel für das Tagebuch. Doch weiß ich nicht, nicht was dieser indiesem Zusammenhang bringen soll, da ja nicht die gleiche Zahl einem bestimmten Besucher zugeordnet wird. Sie ist ja für jeden Eintrag fortlaufend. Oder verstehe ich in diesem Zusammenhang etwas falsch?
rito
***
Beiträge: 54
Registriert: Do, 05.07.2007 10:17

Re: Alle Besuche, wenn letzter Besuch nicht länger als 2 Monate

Beitrag von rito »

Vielleicht kann ich ja doch einen geschlossenen Personenkreis erstellen und eine Excel-Datei einlesen, persönliche Id's erstellen und dann den von dir beschriebenen Weg gehen.

Uff - So eine Datenbank will schon gut geplant sein, dass auch alle kommenden Wünsche eines Arbeitgebers lösbar bleiben. :lol:
Antworten