2010-04-10 1 views
0

저는 하루 종일 이것을 알아 내지 못하고 보냈습니다. 나는 누군가가 나를 2005 SQL Server에 대한 해결하려면 다음 MySQL의 쿼리를 번역하는 데 도움이 바라고 있어요 :MySQL 용으로 설계된 쿼리가 SQL Server 2005에서 작동하도록 번역되어 있어야합니다.

forumName.Text = "<a href='ViewForum.aspx?forumid=" & row.id & "'>" & row.name & "</a>" 
:

SELECT MAX (messages.date) AS maxdate, 
topics.id AS topicid, topics.*, users.* 
FROM messages, topics, users WHERE messages.topic_id 
= topics.id AND topics.user_id = users.id AND 
topics.forum_id = " . $forumid . " GROUP BY 
messages.topic_id ORDER BY maxdate DESC 

$ forumid하면 다음과 VB.NET 코드 숨김 코드에 정의 된 쿼리 스트링 값이다

도와 주시면 감사하겠습니다.

답변

1

두 가지 문제가 있습니다. 첫째, Andomar가 지적했듯이 ORDER BY의 열 별칭을 참조 할 수 없습니다.

둘째, 집계를 수행하는 경우 (MAX와 같은 경우) 집계되지 않는 한 GROUP BY에없는 입력란은 선택할 수 없습니다.

나는 이것이 당신이 원하는 생각 : 작동

SELECT m.maxdate, t.*, u.* 
FROM (
    SELECT topic_id, MAX(messages.date) AS maxdate 
    FROM messages 
    GROUP BY topic_id 
) AS m 
    INNER JOIN topics t ON t.id = m.topic_id 
    INNER JOIN users u ON t.user_id = u.id 
WHERE t.forum_id = " . $forumid . " 
ORDER BY m.maxdate DESC 
+0

을! 정말 고맙습니다. – brookmarker

1

SQL Server는 (적어도 2005 년은하지 않았다.) 당신이 order by에 열 별칭을 참조하는 것을 허용하지 않습니다 당신이에 의해 순서를 교체하는 경우 : 당신은 가까이에 한 단계해야

ORDER BY MAX (messages.date) 

SQL Server 2005에서 작동하는 쿼리

관련 문제