2013-02-20 5 views
0

Я пытаюсь заказать в group_concat в sqlite3. Это не поддерживается в том, что это для 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. Знаете ли вы какие-либо альтернативные методы, чтобы вернуть мой логин, заказанный logDateTime. В моем конечном приложении на самом деле будет несколько столбцов, которые должны быть возвращены так же, как и идентификатор logID, показанный выше, и все эти столбцы должны быть перечислены/упорядочены по logDateTime. – livinzlife

Смежные вопросы