MYSQL COMMANDE EN CAS de Problème

J'ai une base de données comme ceci:

-------------------------------------------------------------------
|   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       |
-------------------------------------------------------------------

J'ai besoin de tirer tous les 4 lignes

ORDER BY 'timestamp_one' if 'id_one'=27 or 
ORDER BY 'timestamp_two' if 'id_one'=27

C'est la déclaration que j'ai maintenant:

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

Cela fonctionne bien qui est sorties ceci:

-------------------------------------------------------------------
|   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       |
-------------------------------------------------------------------

Mais j'ai besoin de deux colonnes timestamp à l'ordre comme ils sont une sorte il commande comme ceci:

-------------------------------------------------------------------
|   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       |
-------------------------------------------------------------------

J'espère que cela a du sens. Essentiellement, je suis en train d'avoir deux colonnes qui sont spécifiques à une condition where. Puis, une fois le bon de COMMANDE PAR colonne est choisi pour cette ligne, il commande les LIGNES en fonction de l'horodatage dans son ensemble.

Vouliez-vous dire "trier PAR "timestamp_two' si 'id_two'=27"?
Si l'un d'horodatage ou de l'autre est toujours NULL, il peut être plus clair pour faire ORDER BY IFNULL(timestamp_one, timestamp_two).

OriginalL'auteur ATLChris | 2010-12-03