我有一个存储语言信息的表格,我想从中提取最相关的数据。如果您请求的语言可用,则应该使用该语言。如果没有,那么它应该返回默认值。
数据如下所示:
ID PARENT_ID NAME LANG
1 1 test default
2 1 test en-GB
3 1 test fr
4 4 Hello default
5 4 Hello en-GB
6 4 Hola es
如果我想获得西班牙语的所有结果,那么我应该能够获得记录6和记录1,因为第一组不包含西班牙语版本。我该怎么做呢?
这是我可以通过查询得到的最接近的,但我总是获得默认值而不是西班牙语结果:
SELECT h_id,
h_faq_id,
h_question,
h_language
FROM
h_itsm_faqs
WHERE
h_language = 'default'
OR
h_language LIKE 'es'
GROUP BY
h_faq_id
ORDER BY
(CASE WHEN h_language LIKE 'es' THEN 1 ELSE 2 END) ASC
我看到的选项如下:
选项1会很棒,但值得注意的是选项3在分页时可能会有问题。
答案 0 :(得分:2)
一种可能的方法是使用左连接将表连接到自身。然后,您可以使用默认语言和特定语言。
for (int i = 0; i < activos; i++) {
atributos[i] = listadetextfields.get(arreglodeactivos[i]).getText();
columnas[i] = listadelabels.get(arreglodeactivos[i]).getText();
ModificarRegistro.where = ModificarRegistro.where + columnas[i] + "=" + "'" + atributos[i] + "' AND ";
}