981 Aufrufe
Gefragt in Datenbanken von truckinggrizzly Einsteiger_in (37 Punkte)
Hallo SNler,

ich brüte gerade über dem Sortieren eines Querys.

Ich hole aus der DB "Gesprächsprotokolle".
Spalten: von, an, nachrichten_id, start_id, text
nachrichten_id ist AUTO_INCREMENT

SELECT *
FROM chat
WHERE ((von = 1 AND an = 55)
OR (von = 55 AND an = 1))
ORDER by start_id, nachrichten_id desc;


Wenn Hans(55) den Klaus(1) erstmalig anschreibt ist die start_id = 0 und die nachrichten_id meinetegen 100.
Wenn Klaus antwortet ist die nachrichten_id vielleicht schon bei 111 und die start_id wegen der Zuordnung 100.

Jetzt möchte ich die neueste Nachricht zuoberst haben und die dazugehörigen chronologisch darunter.

Das funktioniert nur solange bis die beiden ein Gespräch "abgeschlossen" haben und ein neues beginnen.
Die erste Nachricht gehört ja nirgens dazu und bekommt somit start_id = 0.

In der Übersicht stehen jetzt die beiden ersten Nachrichten oben, dann das Protokoll des ersten und zuletzt des 2. Gesprächs.


Kann ich nicht beim Wegspeichern des Gesprächsbeginns im selben Query den AUTO_INCREMENT-Wert in 2 Feldern speichern und so eine korrekte Zuordnung bekommen?


Ich bin mir bewusst das ich eine weitere Tabelle nutzen könnte oder in PHP "herumiteriren". Ich möchte aber, wenn möglich, direkt im INSERT arbeiten.

Ideen?
Danke im voraus, Michael

1 Antwort

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Micheal,

Um es konform zu machen, könnte ich mir eine zusätzliche Spalte in der Abfrage als Ersatz für die start_id mit nachfolgenden Formeln vorstellen:

Wenn([start_id]=0 Und [nachrichten_id]>0;[nachrichten_id];[nachrichten_id])

Sollte die start_id beim zweitmaligen Anschreiben mit der nachrichten_id übereinstimmen, dann sollte die Formel so lauten:

Wenn([start_id]=0 Und [nachrichten_id]>0;[nachrichten_id];[start_id])

Die Formeln sind aus Zeitgründen ungetestet!

Was die absteigende Sortierung betrifft sind die Kriterien in der Entwurfsansicht der Abfrage einzustellen.

Nachfolgende Links könnte ich zusätzlich noch beisteuern:

Link1

Link2

Ich hoffe, Du kannst damit was anfangen, zumal ich selbst mit AUTO_INCREMENT noch keine Erfahrungen gemacht habe.


Gruß

Paul1


[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
ECDL-Syllabus Version 4.0[/sub]
...