Hallo!

> also hab das jetzt versucht aber irgendwie bekomm ichs nich hin
> Die view1 und view3 is klar aber bei
> view2 bekomm ich immer irgendnen Agregatfunktionsfehler,
> sprich er l�sst mich nicht  nur nach zu_id guppieren.
>
> Ich weis ja nicht inwieweit das bei access und sql-server verschieden
ist
> arbeite grad mit a2k
> k�nntest du da nochmal drauf eingehen.
> Hab schon ziemlich viel rumprobiert aber es will nich hinhauen.


View 1 selektiert 50 aktuelle Fragen und View 2 50 Fragen mit den
aktuellen Antworten. View 1 und 2 m�ssen die gleichen Spaltennamen
haben, damit sie in View 3 zusammengefasst werden k�nnen. View 4 liest
dann die kompletten Nachrichten definiert durch die TOP 50 von View 3.

Sorry, wenn ich so etwas einfach hinschreibe, k�nnen im Detail Fehler
auftreten (hier ungleiche Spaltenbezeichner in View 1 / View 2). Deshalb
empfehle ich ja auch immer, die Abfragen direkt in der Datenbank zu
testen.

Also nochmal von vorn (immer noch ohne Gew�hr):

--View 1
SELECT   TOP 50 message_id AS id, message_datum AS datum
FROM     messages
WHERE    zu_id = 0
ORDER BY message_datum DESC

--View 2
SELECT   TOP 50 zu_id AS id, MAX(message_datum) AS datum
FROM     messages
WHERE    zu_id > 0
GROUP BY zu_id
ORDER BY message_datum DESC

Hier geht es lediglich darum, alle "zu_id" mit dem j�ngsten Datum in
eine Liste zu bringen. Deshalb die Gruppierung nach "zu_id" und die
Aggregation �ber "message_datum".

M�glicherweise muss es in der GROUP BY "id" statt "zu_id" hei�en, je
nach dem, ob die Datenbank sich auf die Tabelle oder auf die
Select-Zeile beziehen will. Ich bin mir nicht sicher, aber das sieht man
ja, wenn man die Abfrage in Access eingibt. Ich meine, SQL Server
bezieht sich lieber auf das SELECT und Access w�re es egal, aber ich bin
mir im Moment nicht sicher.

Du kannst die Spaltenumbenennungen auch weglassen und erst in View 3
vornehmen, aber so herum ist es einfacher.

--View 3
SELECT id, datum
FROM   TOP50_questions
UNION
SELECT id, datum
FROM   TOP50_answers

--View 4
SELECT   DISTINCT TOP 50 *,
         (SELECT COUNT(*)
          FROM   messages AS B
          WHERE  B.zu_id = A.message_id) AS answers
FROM     messages AS A INNER JOIN TOP100_threads
                       ON messages.message_id = TOP100_threads.id
ORDER BY TOP100_threads.message_datum DESC

Die Messages werden mit den TOP100_threads verkn�pft (JOIN) und nach dem
Datum (aus TOP100_threads) absteigend sortiert. Allerdings werden nur
die ersten 50 Datens�tze gelesen (TOP 50 *).
Dar�ber hinaus wird eine neue Spalte "answers" erzeugt, die die Anzahl
der Antworten auf eine Frage zur�ckgibt. Das geschieht mit dem
Sub-Select.

Manchmal ist es hilfreich, das SQL Statement direkt in Access einzugeben
und dann �ber den Assistenten zu pr�fen, wie es ankommt. Nicht alle
SQL-Konstruktionen k�nnen in der Entwurfsansicht abgebildet werden.

Freundliche Gr��e
Joachim van de Bruck




| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an