SQL упорядочить несколько строк данных без объединения строк - PullRequest
0 голосов
/ 22 февраля 2012

Для системы уведомлений я пытаюсь взять несколько строк полностью отдельных данных и упорядочить их, используя метку времени Unix. Данные из каждой строки выбираются с помощью пользовательского идентификатора пользователя, а затем строки должны быть упорядочены по времени их появления.

например, одна из выбранных таблиц будет:

- USERID   msgid    timestamp
-   3        5       1234567

Финальная таблица после выбора всех соответствующих данных должна выглядеть следующим образом:

- USERID    msgid    postid    playerpostid     friendrequestid     timestamp  
-   3         5                                                      1234567
-   3                  5                                             1234566
-   3        1234                                                    1234565
-   3                               542                              1234564

Как видите, все таблицы объединяются, но единственное, что их связывает, - это USERID, упорядоченный по отметке времени.

Я пытался объединить, к сожалению, это умножает результаты до смешного количества результатов.

1 Ответ

4 голосов
/ 22 февраля 2012
SELECT * FROM (
  SELECT 
    USERID, msgid, NULL AS postid, NULL AS playerpostid, NULL AS friendrequestid, timestamp
  FROM messages
  WHERE USERID=3

  UNION ALL

  SELECT 
    USERID, NULL AS msgid, postid, NULL AS playerpostid, NULL AS friendrequestid, timestamp
  FROM posts
  WHERE USERID=3

  UNION ALL

  SELECT 
    USERID, NULL AS msgid, NULL AS postid, playerpostid, NULL AS friendrequestid, timestamp
  FROM playerposts
  WHERE USERID=3

  UNION ALL

  SELECT 
    USERID, NULL AS msgid, NULL AS postid, NULL playerpostid, friendrequestid, timestamp
  FROM friendrequests
  WHERE USERID=3
) AS baseview
ORDER BY timestamp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...