Mysql
 sql >> база данни >  >> RDS >> Mysql

Заявка за обединение на MySQL, подреждане по 2 променливи

Това, което наистина трябва да направите, е да разгледате по-внимателно вашата схема. Помислете за едно именуване на колоните за дата и час и след това да изпълните заявка като тази - http:/ /sqlfiddle.com/#!2/a3b4c/7/0

SELECT selection, id, datetimefoo, user FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY datetimefoo DESC

В SQL цигулката това дава резултатите, по-близки до това, което търсите. Все още не съм сигурен защо имате нужда от INNER JOINS във втората заявка - няма нищо, което правите тук, което да ги изисква.

Ето друг метод, който не изисква промяна на имената на колоните, но изисква псевдоним за сортируемите колони - http://sqlfiddle.com/#!2/ec4bc/3/0

SELECT * FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo AS sort_date, -- alias on first table's date
    table2.datetimebar,
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo,
    table2.datetimebar AS sort_date, -- alias on second table's date
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY sort_date DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсачка Lucene срещу търсене в база данни

  2. Не може да стартира сървъра:Свързване на TCP/IP порт:Не може да се присвои исканият адрес

  3. Може ли Mysql да раздели колона?

  4. Премахване на последната запетая в цикъла while - PHP

  5. Редизайн на кода на приложението за намаляване на бр. на посещенията в базата данни от гледна точка на ефективността