PHP MYSQL nyelv lekérdezése probléma

PHP MYSQL nyelv lekérdezése probléma
2018-12-04T00:04:40+01:00
2018-12-04T11:25:38+01:00
2022-10-15T21:41:36+02:00
kisvukk
Üdv!

Címeket szeretnék listázni egy olyan táblából, amiben több nyelven is tárolva vannak

Az alapértelmezett nyelv az angol language=EN, ebből minden tétel létezik, de a többi nyelvből nem minden van a lefordítva. az url mező nyelvtől függetlenül azonos

id,   language,   url,           title
1     EN             page=1    Title 1
2     EN             page=2    Title 2
3     HU             page=2    Cím 2
4     EN             page=3    Title 3
5     HU             page=3    Cím 3
6     EN             page=4    Title 4

Ebből kellene a listába az
1,Title 1
3,Cím 2
5,Cím 3
6,Title 4

Most alapból le van kérdezve angolra, a listázás előtt vissza ellenőriz egy második lekérdezéssel az adott url-re magyarra, ha van, akkor azt tölti, ha nem akkor az első lekérdezésből az angolt.

Próbáltam az ORDERY BY FIELD(language, 'HU', 'EN') ASC, és GROUP BY url, de így csak az angol van a listán.

Hogyan lehet lekérdezni úgy a táblát, hogy a kiválaszott nyelv pl HU, de ha az adott rekord nincs magyarul, akkor az angol kerüljön a listába?
Mutasd a teljes hozzászólást!
Hali!

Megoldás lehet, ha a táblát saját magához kapcsolod (természetesen, csak a megfelelő sorokat véve). Alapértelmezett az angol, ha van magyar megfelelő, akkor azt veszed. Pl.:
SELECT IFNULL(`t_hu`.`id`,`t_en`.`id`) AS `id` , IFNULL(`t_hu`.`title`, `t_en`.`title`) AS `title` FROM `tabla` AS `t_en` LEFT JOIN `tabla` AS `t_hu` ON (`t_en`.`url` = `t_hu`.`url` AND `t_hu`.`language` = 'HU') WHERE `t_en`.`language` = 'EN' ORDER BY `id` ASC
„Működés” közben: SQL Fiddle.

Megjegyzés: elgondolkodhatsz hatékonyabb szerkezet kialakításán.

Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd