2013-02-20 2 views
0

sqlite3에서 group_concat 내에서 주문하려고합니다. 이것은 MySQL을위한 방식에서 지원되지 않습니다, 그래서 나는이 작업을 수행 할 수 없음 :group_concat sqlite 및 주문

group_concat(logID order by logDateTime DESC) 

내 전체 쿼리가 여기에있다, 나는 LOGID가 logDateTime으로 정렬 될 필요가있다. 하위 쿼리 방법에 대한 내용은 여기를 참조하십시오 : Sqlite group_concat ordering하지만 내 쿼리에서 작동시키지 못했습니다.

SELECT logID, 
     NULL AS sessionID, 
     logDateTime, 
     NULL AS sessionName, 
     NULL AS NamesInRandomOrder 
FROM logs 
WHERE sessionID IS NULL 

UNION ALL 

SELECT NULL, 
     sessions.sessionID, 
     MAX(logDateTime), 
     sessions.sessionName, 
     group_concat(logID) 
FROM logs 
JOIN sessions ON logs.sessionID = sessions.sessionID 
GROUP BY sessions.sessionID 

ORDER BY 3 DESC 

답변

0

이는 하위 쿼리를 주문하지만, SQLite는 모든 경우에 순서가 유지 보장하지 않습니다

다시
SELECT logID, 
     NULL AS sessionID, 
     logDateTime, 
     logName, 
     NULL AS NamesInRandomOrder 
FROM logs 
WHERE sessionID IS NULL 

UNION ALL 

SELECT NULL, 
     sessionID, 
     MAX(logDateTime), 
     sessionName, 
     group_concat(logName) 
FROM (SELECT sessions.sessionID AS sessionID, 
      logDateTime, 
      sessionName, 
      logName 
     FROM logs JOIN sessions ON logs.sessionID = sessions.sessionID 
     ORDER BY sessions.sessionID, 
       logName) 
GROUP BY sessionID 

ORDER BY 3 DESC 
+0

당신을, 감사합니다! 내가 필요한 것에 얼마나 가까이 다가 갈 지 조금은 실망 스럽지만 제한된 sqlite의 특성에 의해서만 뒤로 잡혀있다. LogID가 logDateTime에 의해 다시 정렬되도록하는 다른 방법을 알고 있습니까? 최종 응용 프로그램에는 실제로 위에 표시된 logID와 마찬가지로 반환되어야하는 여러 열이 실제로 포함되며 모든 열은 logDateTime에 의해 나열/정렬되어야합니다. – livinzlife