Januar 25, 2021, 07:39:25

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Abfrage

Begonnen von 45457, Mai 04, 2013, 19:19:49

⏪ vorheriges - nächstes ⏩

45457

Hallo Zusammen
Habe ein Problem: Ich erfasse in der Tabelle Personen Eintrittsdum und Austrittsdatum. Nun möchte ich eine Abfrage erstellen wo ich die Jahre der Eintritte und Austritte habe. Damit ich im Formular das Jahr aussuchen kann und mir dann direkt die Ein- und Austritte angezeigt werden. Leider Entstehen wenn ich nicht gleich viele Eintritte wie Austritte habe immer Doppelfelder mit dem gleichen Jahr was nicht brauchbar ist.
Um eure Hilfe wäre ich dankbar.

MzKlMu

Hallo,
zeige den SQL Text der nicht funktionierenden Abfrage.

Ich kann nicht verstehen, dass man das nicht gleich macht.
Gruß
Klaus

45457

Das ist die der Austritte pro Jahr:
SELECT Format([Austrittsdatum],"yyyy") AS Jahr, Count(Personen.Name) AS AnzahlvonName
FROM Personen
WHERE (((Personen.Austrittsdatum) Is Not Null))
GROUP BY Format([Austrittsdatum],"yyyy");

Dann bei EIntritte nochmals das selbe:
SELECT Format([Eintrittsdatum],"yyyy") AS Jahr, Count(Personen.Name) AS AnzahlvonName
FROM Personen
WHERE (((Personen.Eintrittsdatum) Is Not Null))
GROUP BY Format([Eintrittsdatum],"yyyy");

Und nun versuche ich die beide Jahre Zusammenzuknüpfen. d.h. wenn ich eintritte 2011 2x/ 2012 1x /2013 5x und Austritte 2010 1x/ 2011 3x/ 2013 1x dann möchte ich eine Abfrage welche 2010/2011/2012/2013 ausgiebt.

Und das ist das was ich bereits in der Abfrage habe:

SELECT Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Eintritte_Jahr.Jahr
FROM Abf_Anz_Austritte_Jahr, Abf_Anz_Eintritte_Jahr
GROUP BY Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Eintritte_Jahr.Jahr;

Liebe Grüsse

database

Mai 05, 2013, 15:08:22 #3 Letzte Bearbeitung: Mai 05, 2013, 15:13:42 von database
Hallo,

ändere mal die Zusammenfassung auf folgende SQL:


SELECT  Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.AnzahlvonName As Austritte," " As Eintritte
FROM Abf_Anz_Austritte_Jahr
UNION
SELECT Abf_Anz_Eintritte_Jahr.Jahr, " " as Eintritte ,Abf_Anz_Eintritte_Jahr.AnzahlvonName
FROM Abf_Anz_Eintritte_Jahr



Damit bekommst du eine Übersicht über alle Ein und Austritte inkl. deren Anzahl.

Oder...


SELECT Abf_Anz_Eintritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.Jahr
FROM Abf_Anz_Eintritte_Jahr
LEFT JOIN Abf_Anz_Austritte_Jahr
ON Abf_Anz_Eintritte_Jahr.Jahr = Abf_Anz_Austritte_Jahr.Jahr
GROUP BY Abf_Anz_Eintritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.Jahr;



Damit werden Ein- und Austritte nebeneinander angezeigt - in dem Fall nur die Jahreszahlen

Oder aber auch...


SELECT Abf_Anz_Eintritte_Jahr.Jahr, Abf_Anz_Eintritte_Jahr.AnzahlvonName AS AnzEin,
           Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.AnzahlvonName AS AnzAus
FROM Abf_Anz_Eintritte_Jahr
LEFT JOIN Abf_Anz_Austritte_Jahr
ON Abf_Anz_Eintritte_Jahr.Jahr = Abf_Anz_Austritte_Jahr.Jahr
GROUP BY Abf_Anz_Eintritte_Jahr.Jahr, Abf_Anz_Eintritte_Jahr.AnzahlvonName,
        Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.AnzahlvonName;



Damit bekommst du wie oben die Gegenüberstellung mit den entsprechenden Stückzahlen

HTH

45457

Ich möchte es eigentlich so wie diesen Befehl:

SELECT  Abf_Anz_Austritte_Jahr.Jahr, Abf_Anz_Austritte_Jahr.AnzahlvonName As Austritte," " As Eintritte
FROM Abf_Anz_Austritte_Jahr
UNION
SELECT Abf_Anz_Eintritte_Jahr.Jahr, " " as Eintritte ,Abf_Anz_Eintritte_Jahr.AnzahlvonName
FROM Abf_Anz_Eintritte_Jahr

Ausser dass das Jahr nicht doppelt erscheint, wenn ich einen Aus und einen Eintritt habe.
Danke für deine Hilfe.

Liebe Grüsse


database

Hallo,

ZitatAusser dass das Jahr nicht doppelt erscheint, wenn ich einen Aus und einen Eintritt habe

Das Jahr erscheint bei der UNION-Abfrage auch nicht doppelt, sondern 1x für die Eintritte und 1x für die Austritte - und das ist was anderes als doppelt  ;D

Ok, dann gibt es noch eine Möglichkeit mit einem kleinen Mehraufwand.
Erstelle dir eine Tabelle - tblJahr mit einem Zahlenfeld 'Jahr' und trage dann die Jahreszahlen von blabla  2010 bis 2014 ein.

Erstelle ein neue Abfrage und füge der den folgenden SQL-String ein:


SELECT tblJahr.jahr, Abf_Anz_Eintritte_Jahr.AnzahlvonName AS Eintritte,
      Abf_Anz_Austritte_Jahr.AnzahlvonName AS Austritte
FROM Abf_Anz_Eintritte_Jahr
RIGHT JOIN (tblJahr LEFT JOIN Abf_Anz_Austritte_Jahr ON tblJahr.jahr = Abf_Anz_Austritte_Jahr.Jahr)
ON Abf_Anz_Eintritte_Jahr.Jahr = tblJahr.jahr



Nun sollte das Ergebnis aber schon verdammt gut aussehen oder?
 ::) ;D