2010-12-14 2 views

Antwort

0

Es ist verwirrend, genau, welche Informationen Sie abrufen versuchen, aber wenn Sie eine bestimmte ID kennen, dann können Sie verwenden:

SELECT ID,lang,time 
FROM articles,article_versions 
WHERE articles.ID=<article_id_you_provide> AND 
     articles.ID=article_versions.article AND 
     article_versions.time = (SELECT max(time) 
           FROM article_versions 
           WHERE article=<article_id_you_provide>); 

Lassen Sie mich wissen, wenn dies nicht der Fall ist, was Sie suchen, und ich kann revidiere meine Antwort weiter.

+0

ja, es tut, was ich will. Aber was ist mit der Leistung, ist das nicht langsamer als beitreten oder es ist wie beitreten? – kravemir

+0

gut tut es auf diese Weise ist ein Join in einem Sinne, weil es dauert das Kreuzprodukt der beiden Tabellen und die Where-Klauseln Filter. Der Grund, warum ich die Joinsyntax nicht verwendete, liegt darin, dass Ihr Fremdschlüssel in article_versions nicht den gleichen Namen wie Artikel hat, also wäre es auch unordentlich, einen natürlichen Join zu machen. –

0

Unter der Annahme [Articles_versions] [Zeit] wäre die einzige eindeutige Spalte in der Sie folgende JOIN gesetzt zurückgegeben werden könnten.

SELECT [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang], MAX([Articles_versions].[time]) 
FROM Articles Inner Join Articles_versions ON [Articles].[ID] = [Articles_versions].[article] 
GROUP BY [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang] 
+0

das holt neueste Artikelversionen nicht. Also MAX (Zeit) ist das neueste, aber andere Felder von article_versions sind nicht – kravemir

Verwandte Themen