Server-Daten - Web-Datenbanken zum Mietenbasierend auf den Standards Sql und Xml, einfach und leistungsfähig

Zur Startseite


Das Server-Daten - Forum: Einzelner Thread

 

Zurück zur Forumsstartseite

 


1. free  14.03.2009 10:27:13Peter de MaasLesen/Editieren   Antworten

AuswertungsabfrageGuten Tag,
habe schon wieder ein SQL-Abfrageproblem an dem ich nicht weiter komme.
Es geht um die Auswertung zweier Tabellen, Klienten und Journaleinträge. Klienten enthält u.a. eine ID je Datensatz. Diesem zugeordnet sind Datensätze der zweiten Tabelle, journaleinträge, die u.a. jeweils ein Datenfeld "Jid", "rootid" (referenz zur Haupttabelle), "DATUM", "ART",..., enthalten. Ein Klientdatensatz (id) sind also u.u. mehrere Datensätze zugeordnet, die jeweils verschiedene oder gleiche Werte unter ART enthalten.
Auswertungen, die Journaldatensätze auswerfen, die innerhalb eines bestimmten Zeitraumes mindestens ein mal z.b. ART=1 enthalten, bekomme ich zustande (vermutlich komplizierter als nötig). Mein Problem aber sind Auswertungen, die Journaldatensätze eines Zeitraumes auswerfen, in dem eine bestimmte ART nicht vorkam. Sehe da wohl den Wald vor lauter Baümen nicht???
Für ein bischen Anschubhilfe wäre ich sehr dankbar.
Peter

2. free  14.03.2009 14:47:54Jürgen AuerLesen/Editieren   Antworten

Re: AuswertungsabfrageEigentlich ist das nur eine Where-Klausel:

Where Datum Between '2005-01-01' And 2007-12-31'
And Art <> 1

3. free  14.03.2009 16:01:16Peter de MaasLesen/Editieren   Antworten

Auswertungsabfrage2Ja, da bin ich mir nicht so genau sicher. Es geht darum diejenigen Klient-ids auszuwerfen, die in einem Zeitraum 2005-01-01' And 2007-12-31'niemals einen Eintrag mit der ART=1 hatten. Wichtig ist also, dass alle(!) in fragekommenden Einträge der zweiten tabelle nicht das Merkmal hatten. Wenn beispielsweise nur 1 DS der zweiten tabelle ART=1 hatte, dann würde die Abfrage ja doch diesen Klienten nicht auswerfen, weil die anderen DS vielleicht zutreffen.
Mal ein Beispiel: in der Tabelle klienten hat eine Person die id 100.
in der tabelle Journaleinträge gibt es folgende DS, alle mit datum im gesuchten Bereich:
jid=345; rootid=100;art=0
jid=444; rootid=100;art=3
jid=555; rootid=100;art=0
Meine Abfrage sollte die Klientid 100 auswerfen, denn kein zugeordnerter DS hatte art=1. Wäre abe noch ein DS
jid=446; rootid=100;art=1
im obigen Beispiel, dann sollte die Abfrage die Klientid 100 nicht zählen. Umgekehrt ist es m.E. kein Problem, wenn ich diejenigen rausfinden will, die mindestens 1 mal das merkmal hatten, mein Problem ist es, wenns nicht so war. Oder liege ich da völlig falsch?
Gruß
Peter

4. free  14.03.2009 21:56:59Jürgen AuerLesen/Editieren   Antworten

Re: Auswertungsabfrage> Es geht darum diejenigen Klient-ids auszuwerfen, die in einem Zeitraum 2005-01-01' And 2007-12-31'niemals einen Eintrag mit der ART=1 hatten.


Das läßt sich über einen Left Join erledigen.

Als Unterabfrage die Zeilen, die diese Eigenschaft haben:

Select B.Id
From Tabelle As B
Where B.Datum Between '2005-01-01' And '2007-12-31' And B.ART = 1
Group By B.Id

und das als Unterabfrage per Left Join verknüpft:

Select A.Id
From Tabelle As A Left Join ( obiges ) As C
On A.Id = C.Id
Where C.Id Is Null

Dann führt ein passender Eintrag dazu, daß diese Id nicht mehr auftaucht.


5. free  15.03.2009 02:15:38Peter de MaasLesen/Editieren   Antworten

Auswertungsabfrage3Vielen Dank, sieht nach dem aus, was ich suche!
Peter

|<<>>|1 / 51

Zurück zur Forumsstartseite

Zurück zu beispiel.server-daten.de