Matty: UNION, GROUP BY und MAX

Beitrag lesen

aha, Du möchtest also nur die "neuesten" Werte zu jeder id haben. Ein ganz
neuer Aspekt, der in Deinem Ausgangsposting nicht enthalten ist. Das kannst
Du ganz einfach mit einer GROUP-BY-Klausel und der entsprechenden
Aggregatsfunktion lösen.

Nein du hast es nicht verstanden.

Ich möchte nicht die neusten Werte zu jeder ID haben sondern ich möchte die aktuellsten Werte aus mehreren Tabellen haben, wobei die a_id nur atomar erscheinen soll. Ich glaube langsam, dass das nicht mit SQL zu lösen ist :(

Hier mal das echte Statement ... mit GROUP BY klappt es _nicht_ (hatte ich schon probiert). Es erscheinen immernoch Duplikate der id

  
  
SELECT DISTINCT `id` , 1, `datum`  
  FROM `ask`  
UNION DISTINCT  
  SELECT `ask_id` AS 'id', 2, `datum`  
  FROM `answer`  
UNION DISTINCT  
  SELECT AP.`ask_id` AS 'id', 3, `time` AS datum  
  FROM `poll_votes` AS PV  
  LEFT JOIN `ask_polls` AS AP  
    ON ( PV.`poll_id` = AP.`id` )  
UNION DISTINCT  
  SELECT ANS.`ask_id` AS id, 4, AC.`datum`  
  FROM `answer_comments` AS AC  
  LEFT JOIN `answer` AS ANS  
    ON ( AC.`ans_id` = ANS.`id` )  
  WHERE ANS.id IS NOT NULL  
UNION DISTINCT  
  SELECT `ask_id` AS id, 5, `datum`  
  FROM `ja_nein_ip_check`  
UNION DISTINCT  
  SELECT `ask_id` AS id, 6, `datum`  
  FROM `ask_ip_check`  
  
GROUP BY `id`  
ORDER BY `datum` DESC  

Ergebnis

id  1  datum absteigend
--------------------------------------
185  3  2008-02-11 11:59:06 <-doppelt
184  2  2008-02-11 11:56:00
185  3  2008-02-11 11:46:56 <-doppelt
181  6  2008-02-11 11:38:00
177  6  2008-02-11 11:38:00
182  6  2008-02-11 11:37:00
185  3  2008-02-11 11:36:23 <-doppelt
185  1  2008-02-11 11:34:00 <-doppelt
176  6  2008-02-11 11:06:00

Die zweite Spalte hier dient mir nur dazu, zu sehen aus welchem Union die Row kommt.

Danke weiterhin im Voraus!

Freundliche Grüße

Vinzenz