[silindi] Kolay yolu, alakalı kayıtları bir değer altında gruplamak. Mesela:
+----+-----+------+---------+
| id | key | lang | name |
+----+-----+------+---------+
| 1 | 1 | tr | Şehir |
| 2 | 1 | en | City |
| 3 | 2 | tr | Ülke |
| 4 | 2 | en | Country |
+----+-----+------+---------+
şeklinde key alanı ile grupladım. Böylece hangi kaydın aynı kelimenin çevirileri olduğunu biliyorum:
SELECT key,
GROUP_CONCAT(name SEPARATOR ' -> ') AS translation
FROM table
GROUP BY key
+-----+-----------------+
| key | translation |
+-----+-----------------+
| 1 | Şehir -> City |
| 2 | Ülke -> Country |
+-----+-----------------+
O yüzden artık şöyle yapabilirim:
SELECT *
FROM table
ORDER BY key,
FIELD(lang, 'en', 'tr')
+----+-----+------+---------+
| id | key | lang | name |
+----+-----+------+---------+
| 2 | 1 | en | City |
| 1 | 1 | tr | Şehir |
| 4 | 2 | en | Country |
| 3 | 2 | tr | Ülke |
+----+-----+------+---------+
* (Dikkat edin en, tr, en, tr olacak şekilde tersten sıralanıyor)