Tengo una base de datos de la siguiente manera:MySQL ORDER BY Edición CASO
-------------------------------------------------------------------
| id_one | id_two | timestamp_one | timestamp_two |
-------------------------------------------------------------------
| 27 | 35 | 9:30 | NULL |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:35 |
-------------------------------------------------------------------
| 27 | 35 | 9:34 | NULL |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:33 |
-------------------------------------------------------------------
tengo que tirar de los 4 filas
ORDER BY 'timestamp_one' if 'id_one'=27 or
ORDER BY 'timestamp_two' if 'id_one'=27
Este es el comunicado que tengo ahora:
SELECT * FROM tablename
WHERE id_one=27 OR id_two=27
ORDER BY
CASE WHEN id_one=27 THEN timestamp_one END DESC,
CASE WHEN id_two=27 THEN timestamp_two END DESC
Esto funciona bien en que es salidas esto:
-------------------------------------------------------------------
| id_one | id_two | timestamp_one | timestamp_two |
-------------------------------------------------------------------
| 27 | 35 | 9:30 | NULL |
-------------------------------------------------------------------
| 27 | 35 | 9:34 | NULL |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:33 |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:35 |
-------------------------------------------------------------------
pero necesito dos columnas de fecha y hora a la orden como si fueran uno por lo que sería pedir así:
-------------------------------------------------------------------
| id_one | id_two | timestamp_one | timestamp_two |
-------------------------------------------------------------------
| 27 | 35 | 9:30 | NULL |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:33 |
-------------------------------------------------------------------
| 27 | 35 | 9:34 | NULL |
-------------------------------------------------------------------
| 35 | 27 | NULL | 9:35 |
-------------------------------------------------------------------
Espero que esto tenga sentido. Esencialmente, estoy tratando de tener dos columnas ORDER BY que son específicas de una condición WHERE. Luego, una vez que se elige la columna correcta ORDER BY para esa fila, ordena las ROWS por la marca de tiempo como un todo.
¿Se refiere a "ORDER BY 'timestamp_two' si 'id_two' = 27"? – buru
Si una marca de tiempo u otra es siempre 'NULL', podría ser más claro hacer' ORDER BY IFNULL (timestamp_one, timestamp_two) '. – dkarp