Sqlite Android 按 & group_concat 排序
Sqlite Android order by & group_concat
我正在使用 sqlite3 : 3.8.2 和 sqliteman (Ubuntu 14.04) 来尝试我的程序中需要的查询 Android.
Android 版本 4.0+。
我有3个table用来获取数据
我发现了这个问题:
当我在 sqliteman 中使用这个查询时
SELECT st.nome
AS nome,
st.cognome
AS cognome,
(SELECT ae.usercode
AS usercode
FROM assenze ae
WHERE st.ultimo_evento = ae.fk_evento)
AS ultimo_evento,
(SELECT
GROUP_CONCAT(
ev.nome_evento, ", "
)
AS nome_evento
FROM eventi ev
WHERE ev.studente_id = st.id
)
AS nome_evento
FROM studenti st
WHERE st.classe_ident ='4297'
ORDER BY st.cognome
输出为:
EP, USC, R1, R, A
... 非常适合我
但是当我在 android 和 db.rawQuery()
中使用它时,结果是
A, EP, R, R1, USC
... 对我没好处
似乎也是这个查询的相同结果(在sqliteman和android中执行):
SELECT
st.nome AS nome,
st.cognome AS cognome,
ae.usercode AS ultimo_evento,
GROUP_CONCAT(
ev.nome_evento, ", "
)
AS nome_evento
FROM studenti st
LEFT JOIN eventi ev
ON st.id = ev.studente_id
LEFT JOIN assenze ae
ON st.ultimo_evento = ae.fk_evento
WHERE st.classe_ident ='4297'
GROUP BY st.id
ORDER BY st.cognome
可能是我的错,但我仍在努力寻找解决方案...
谢谢
似乎它在没有 ORDER BY ev.data_ora_evento 的情况下也能工作。但是在 android 仍然无法正常工作...
group_concat() documentation 说:
The order of the concatenated elements is arbitrary.
但是,您可以尝试通过对已排序的子查询执行 group_concat() 来强制排序:
SELECT GROUP_CONCAT(ev.nome_evento, ", ") AS nome_evento
FROM (SELECT nome_evento
FROM eventi
WHERE studente_id = st.id
ORDER BY whatever) AS ev
我正在使用 sqlite3 : 3.8.2 和 sqliteman (Ubuntu 14.04) 来尝试我的程序中需要的查询 Android.
Android 版本 4.0+。
我有3个table用来获取数据
我发现了这个问题:
当我在 sqliteman 中使用这个查询时
SELECT st.nome
AS nome,
st.cognome
AS cognome,
(SELECT ae.usercode
AS usercode
FROM assenze ae
WHERE st.ultimo_evento = ae.fk_evento)
AS ultimo_evento,
(SELECT
GROUP_CONCAT(
ev.nome_evento, ", "
)
AS nome_evento
FROM eventi ev
WHERE ev.studente_id = st.id
)
AS nome_evento
FROM studenti st
WHERE st.classe_ident ='4297'
ORDER BY st.cognome
输出为:
EP, USC, R1, R, A
... 非常适合我
但是当我在 android 和 db.rawQuery()
中使用它时,结果是
A, EP, R, R1, USC
... 对我没好处
似乎也是这个查询的相同结果(在sqliteman和android中执行):
SELECT
st.nome AS nome,
st.cognome AS cognome,
ae.usercode AS ultimo_evento,
GROUP_CONCAT(
ev.nome_evento, ", "
)
AS nome_evento
FROM studenti st
LEFT JOIN eventi ev
ON st.id = ev.studente_id
LEFT JOIN assenze ae
ON st.ultimo_evento = ae.fk_evento
WHERE st.classe_ident ='4297'
GROUP BY st.id
ORDER BY st.cognome
可能是我的错,但我仍在努力寻找解决方案...
谢谢
似乎它在没有 ORDER BY ev.data_ora_evento 的情况下也能工作。但是在 android 仍然无法正常工作...
group_concat() documentation 说:
The order of the concatenated elements is arbitrary.
但是,您可以尝试通过对已排序的子查询执行 group_concat() 来强制排序:
SELECT GROUP_CONCAT(ev.nome_evento, ", ") AS nome_evento
FROM (SELECT nome_evento
FROM eventi
WHERE studente_id = st.id
ORDER BY whatever) AS ev