2017-02-12 3 views
-3

Ich habe zwei Tabellen die erste ist, die die zweite ‚Nutzer‘ ist die ‚Beiträge‘, die ‚Nutzer‘ haben zwei Spalten:Wie kann man nach letzten Antworten sortieren?

1 id 
2 username 

die ‚Stellen‘ fünf Spalten:

1 p_id 
2 uid 
3 post_id 
4 content 
5 date 

Die Posts wie definiert haben den Wert '0' in post_id und die Antworten haben den Wert p_id in post_id. Meine Abfrage ist

SELECT id,username,p_id,uid,post_id,content,date 
FROM users 
inner join posts 
ON users.id=posts.uid 
WHERE post_id='0' 
ORDER BY p_id DESC 

aber ich möchte nach den letzten Antworten wie in einem Forum bestellen.

+2

ORDER BY 'date' – dognose

+1

A: RTM => https://dev.mysql.com/doc/refman/5.7/en/ select.html, wenn Sie mysql verwenden. –

+1

Außerdem ist das RDBMS unklar, welche Sie verwenden, und das PHP-Tag enthält keinen Code, um die Frage zu unterstützen. –

Antwort

0

Verwenden Sie eine korrelierte Unterabfrage in der SELECT-Klausel, um das letzte Antwortdatum und die Reihenfolge nach dieser Spalte zu finden. Wenn die Post keine replys hat, verwenden Sie das Datum des Posts statt:

SELECT id,username,p_id,uid,post_id,content,date, (
    SELECT MAX(date) FROM posts r WHERE r.post_id = p.p_id 
) AS last_reply_date 
FROM users 
inner join posts p 
ON users.id=p.uid 
WHERE p.post_id='0' 
ORDER BY COALESCE(last_reply_date, p.date) DESC 
+0

Vielen Dank das ist ... du bist echt BRAVO ... – kimo

Verwandte Themen