mysql - Select pairs of values when searching a DB -
ina simple language translation table, want search lang1<=>lang2 pairs. in search form 3 fields available: 1. neutral text (entry name) 2. text in language1 3. text in language2
if field ommited, search should return everything, only if filled fields match. table looks this:
id | neutral text | language | translation ---+--------------+----------+------------ 0 | submit | en | submit 1 | submit | cs | odeslat 2 | submit | fr | démarrer 3 | day | fr | jour 4 | monday | fr | lundi 5 | monday | cs | pondělí
i find quite complicated find out, how return matching values, associate them pair language (in 1 query). tried make condition based on existence of other language:
//executes if 1 language value specified select name, lang, content `texty` name $neutral_txt , (content $l1_val , lang=$l1 or lang=$lang2 , 0 < (select count(*) `texty` content $l1_val , lang=$l1)) group name
i tried add group by
statement in hope values same name
returned, current aproach returs entries in language2 (provided there @ least 1 entry matching $l1_val
).
want query return following (using languages cs
, fr
):
filled fields: neutral text="submit" ->rows 1,2 filled fields: translation_fr="démarrer" ->rows 1,2 filled fields: translation_fr="jour" ->rows 3
so, want pair found values other values same name. queries both or none language specified work fine me.
one more explanation:
have database above structure - contains language name, name of entry (neutral text) , value in language specified. want search database, searching 2 different language translations (eg.: "odeslat", "demarrer") , entry name (eg.: "submit").
of search requirements can ommited. want search return entries other language has matched. in above examples:
user searches translation containing "démarrer" in language 'fr' , other language 'cs'. row 2 returned - contains query. also, wish return row 1, can display czech version of "démarrer".
queries should serve in purpose of comparing translations.
Comments
Post a Comment