2013-04-06 10 views
7

ich habe diese Tabellen:SQL beitreten links bekommen MAX (Datum)

  • Mitteilung
    • id INT
    • cdate DATETIME-
    • ...

  • Thema
    • id
    • Name

  • notice_theme
    • id_notice
    • id_theme

ich die neuesten Mitteilungen für jedes Thema erhalten möchten.

SELECT id_theme, n.id 
FROM notice_theme 
LEFT JOIN (
    SELECT id, cdate 
    FROM notice 
    ORDER BY cdate DESC 
) AS n ON notice_theme.id_notice = n.id 
GROUP BY id_theme 

Das Ergebnis ist nicht gut. Eine Idee ? Vielen Dank.

+1

Wo ist Ihr MAX (Datum)? – hjpotter92

+0

Es gibt keine Garantien, dass das ORDER BY einer verbundenen Tabelle beibehalten wird. Setzen Sie ORDER BY in die äußere Auswahl. – flup

+0

Sie müssen hinzufügen Max (n.cdate) – Rohit

Antwort

6

Es gibt so viele Möglichkeiten, dies zu lösen, aber ich bin es gewohnt, es auf diese Weise zu tun. Eine zusätzliche Unterabfrage wird benötigt, um die letzte cDate für jede ID separat zu berechnen.

SELECT a.*, c.* 
FROM theme a 
     INNER JOIN notice_theme b 
      ON a.ID = b.id_theme 
     INNER JOIN notice c 
      ON b.id_notice = c.ID 
     INNER JOIN 
     (
      SELECT a.id_theme, MAX(b.DATE_CREATE) max_date 
      FROM notice_theme a 
        INNER JOIN notice b 
         ON a.ID_Notice = b.ID 
      GROUP BY a.id_theme 
     ) d ON b.id_theme = d.id_theme AND 
       c.DATE_CREATE = d.max_date 
+1

Danke für die Antwort, mit Ihrer Anfrage (@JW): > id_theme ---- id_notice ---- date_create > 2 --------- --2 ------------ 2013-03-31 09:18:21 > 4 ----------- 2 ---------- --2013-03-31 09:18:21 > 1 ----------- 7 ------------ 2013-03-31 23:27:28 > 2 ----------- 7 ------------ 2013-03-31 23:27:28 > 4 ----------- 11 ----------- 2013-02-16 04:40:21 > 5 ----------- 12 ----------- 2013- 02-05 20.18.21 > 4 ----------- 13 ----------- 2013.03.31 23.27.28 > 2 --- -------- 14 ----------- 2013-03-15 20:18:21 Und mit einem GROUP BY a.id, ich habe das gleiche Problem mit meiner Anfrage:/ – user2252137

+0

können Sie Beispielsätze mit Ihrem deired Ergebnis geben? –

+0

http://www.2shared.com/document/nJNTNfCz/example.html – user2252137