time Geschrieben 25. Oktober 2010 Teilen Geschrieben 25. Oktober 2010 Hallo zusammen, möchte eine Abfrage aus zwei Tabellen durchführen, die unterschiedliche Datumseinträge haben. Das Ergebnis sollte die Summe aus beiden Tabellen zu den verschiedenen Datumseinträgen sein. Leider bekomme ich bei der Abfrage immer wieder neue Fehler. Vielleicht könnt Ihr mir helfen. Server: SQL Server 2005 Express Beispiel Tabelle1 und Tabelle2 : 25.10.2010 ... 25.10.2010 ... 25.10.2010 ... 25.10.2010 ... 25.10.2010 ... 25.10.2010 ... 24.10.2010 ... 23.10.2010 ... 24.10.2010 ... 22.10.2010 ... 22.10.2010 ... 22.10.2010 ... Ergebnis sollte sein: Spalte1 Spalte2 6 - 25.10.2010 2 - 24.10.2010 1 - 23.10.2010 3 - 22.10.2010 meine sql Abfrage: select count([tabelle1].[zeitpunktdruck]) + count([tabelle2].[zeitpunktdruck]) , Zeitpunkdruck as Datum from tabelle1 tabelle2 Group by year(zeitpunktdruck), month(zeitpunktdruck), day(zeitpunktdruck) Order by zeitpunktdruck DESC Danke für Eure Hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tennessee Geschrieben 25. Oktober 2010 Teilen Geschrieben 25. Oktober 2010 Also meine angabe ist ohne gewähr aber es müsste doch eigentlich nur eine Summe relevant sein. Wenn eine Tabelle ein anderes Datum als die andere hat ist es doch umgekehrt das gleiche :confused: Insofern würde ich folgendes Statement vorschlagen: select a.count(*) as Summe, a.Datum, b.Datum from tabelle1 a, tabelle2 b where not a.Datum = b.Datum group by a.Datum order by a.Datum Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mcolli Geschrieben 25. Oktober 2010 Teilen Geschrieben 25. Oktober 2010 Deine schreibweise des Statements nehme ich auch für gewöhnlich, da diese für mich intuitiver ist. Du musst bei Verwendung der "Count" Funktion allerdings nach alle gelisteten Spalten Ggoupieren. Bei Oracle und SQL-Server macht die Serverseitige Abfrageoptimierung ausserdem aus dem Statement ein SELECT COUNT(*) AS Summe, a.Datum AS 'Datum von A', b.Datum AS 'Datum von B' FROM Tabelle1 AS a CROSS JOIN Tabelle2 AS b WHERE (NOT (a.Datum = b.Datum)) GROUP BY a.Datum, b.Datum ORDER BY 'Datum von A' Mit outer/inner/left/right joins kann man abgesehen von performanteren Statements auch die ergebnise besser steuern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
time Geschrieben 26. Oktober 2010 Autor Teilen Geschrieben 26. Oktober 2010 Danke für Eure Antworten, doch leider funktioniert die Abfrage nicht. Vielleicht hängt es mit dem Datum zusammen. Meine Abfrage auf die einzelnen Tabellen liefert das richtige Ergebnis, nur müssen die beiden zusammengefügt werden. Abfrage1 SELECT Count([Tabelle1].ZeitpunktDruck) AS [Anzahl Druck], Right(Right('0',1)+Right(Day([Zeitpunktdruck]),2),2)+'.'+Right(Right('0',1)+Right(Month([ZeitpunktDruck]),2),2)+'.'+Right(Year([ZeitpunktDruck]),4) AS Datum FROM [Tabelle1] where ZeitpunktDruck is not null GROUP BY Year([Zeitpunktdruck]), Month([Zeitpunktdruck]), Day([ZeitpunktDruck]) ORDER BY Year([Zeitpunktdruck]) DESC , Month([Zeitpunktdruck]) DESC , Day([ZeitpunktDruck]) DESC und Abfrage 2 SELECT Count([Tabelle2].ZeitpunktDruck) AS [Anzahl Druck], Right(Right('0',1)+Right(Day([Zeitpunktdruck]),2),2)+'.'+Right(Right('0',1)+Right(Month([ZeitpunktDruck]),2),2)+'.'+Right(Year([ZeitpunktDruck]),4) AS Datum FROM [Tabelle2] where ZeitpunktDruck is not null GROUP BY Year([Zeitpunktdruck]), Month([Zeitpunktdruck]), Day([ZeitpunktDruck]) ORDER BY Year([Zeitpunktdruck]) DESC , Month([Zeitpunktdruck]) DESC , Day([ZeitpunktDruck]) DESC Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.