Realiai galiu pasiūlyti tik vieną variantą (-; Bet jis nebus labai "optimalus", nes kiek žiūriu tai nelabai tinkama struktūra šiam uždaviniui.
Sprendimas būtų toks:
a) kokiu nors būdu pasikonvertuoti kalbų, gautų iš userio naršyklės kodus į vidinius language_id. Tai galima atlikti tiek su PHP, turint klasifikatorių masyve, tiek su MySQL'us sudedant tą klasifikatorių į duomenų bazę, atskirą lentelę;
b) details lentelę grupuoti pagal automobilio, rūšiuoti pagal vartotojui priimtinų kalbų aibę (.. ORDER BY language_id IN('en','de','lt');), ir išrinkti po vieną elementą iš grupės; Kaip iš gauti po vieną elementą iš grupės gali pasiskaityti čia: http://www.mysql.lt/wiki/SQL_Norimas_El … l_Atributa ; Jeigu naudotum kalbų klasifikatorių iš duomenų bazės, tai galėtum IN() operatoriui nurodyti sub-užklausą;
c) sujungti gautą rezultatą su norimų atvaizduoti automobilių aibe;
čia veikiantį variantą turėtų pasisekti parašyti, tik realiai turint daug duomenų, jis turėtų būti lėtas, nes:
a) naudojama IN() struktūra, kuri yra lėta;
b) naudojamas dinaminis skaitliukas, kuris yra lėtas;
...nebent duomenų kiekis nėra labai didelis (-;
Viską palengvinti galima būtų tada, jeigu language_id savo skaitine verte atitiktų kalbos prioritetą, tada išrenkant automobilių aprašus pagal kalbą, būtų galima naudoti MIN/MAX funkcijas, kurios yra laikomos kaip agregatinės, ir jas galima taikyti grupuojant elementus su GROUP BY.