C'est une question difficile à expliquer, voyons si je peux.MySQL: Sélectionnez Distinct sur plusieurs tables et l'ordre par datetime
Je suis à la recherche d'un moyen dans une base MySQL pour sélectionner les 5 dernières entrées (ordonnée par datetime desc) par distincts sur trois tables pid.
Voici un exemple.
TABLE1
* Notez que l'ID de colonne du tableau 1 doit être avec pid substitué correspondent aux autres tables (select id comme pid).
id* datetime
|-----|------------|
| 1 | 1/1/2000 |
| 2 | 2/1/2000 |
| 3 | 3/1/2000 | ← two
| 4 | 1/3/2000 | ← five
| 5 | 1/3/2000 |
TABLEAU2
id pid datetime
|-----|-----|------------|
| 1 | 1 | 1/2/2000 |
| 2 | 1 | 1/2/2000 |
| 3 | 2 | 2/2/2000 | ← three
| 4 | 3 | 1/2/2000 |
| 5 | 5 | 1/4/2000 | ← four
TABLE3
id pid datetime
|-----|-----|------------|
| 1 | 1 | 6/1/2000 | ← one
| 2 | 1 | 1/1/2000 |
| 3 | 1 | 1/1/2000 |
| 4 | 2 | 1/1/2000 |
| 5 | 3 | 1/1/2000 |
Résultat serait
pid datetime
|-----|------------|
| 1 | 6/1/2000 | ← one
| 3 | 3/1/2000 | ← two
| 2 | 2/2/2000 | ← three
| 5 | 1/4/2000 | ← four
| 4 | 1/3/2000 | ← five
Je suis assez nouveau à mysql. J'ai cherché autour et c'est le meilleur que j'ai trouvé jusqu'ici, mais c'est totalement faux. Merci pour l'aide.
SELECT DISTINCT pid, datetime
from (SELECT id AS pid, datetime FROM table1
UNION
SELECT pid, datetime FROM table2
UNION
SELECT pid, datetime from table3) t
ORDER BY datetime DESC
LIMIT 5
À moins que vous échangez le '' id' et les noms de colonnes de pid' dans 'table2', la ligne' four' ne sera pas le résultat ensemble. –
Merci pour votre aide. Je ne suis pas sûr de ce que tu veux dire? Est-ce que votre réponse ci-dessous n'inclut pas la ligne quatre dans le jeu de résultats? – ctown4life
Non, ce n'est pas le cas. Vous sélectionnez la colonne 'pid' qui a la valeur' 3' pas '5'. Pour pid 5, la ligne résultante sera '5 | 1/3/2000 ». –