Android 中来自 JOIN 查询 SqLite 的数据的可视化

Visualization of data coming from a JOIN query SqLite in Android

在为 Android 编程时,我第一次偶然发现了使用 SqlLite 进行 INNER JOIN 的概念。 我设法找回了一些东西,但现在的问题是我想在列表中显示数据,但我无法按预期显示信息。

这是检索数据的查询

cursor = database.rawQuery("SELECT matchesbet._id, hometeam, awayteam, gamble " +
                    "FROM matchesbet INNER JOIN gambles ON matchesbet.idmatch = gambles.idmatch " +
                    "WHERE matchesbet.idbet = ? GROUP BY matchesbet.idmatch ORDER BY matchesbet._id DESC", selectionArgs);

数据用于class,它在 bindView 方法中扩展了 CursorAdapter

    TextView tvGamble = (TextView) view.findViewById(R.id.gamble_text_view);

    // Extract properties from cursor
    int gamble = cursor.getInt(cursor.getColumnIndex("gamble"));

    tvGamble.setText(String.valueOf(gamble));

现在在数据库中,我为每场比赛保存了多个 "gamble",但我唯一可以显示的是 1 次赌博。

数据库表结构和示例数据

MATCHESBET
    +-----+-------+---------+----------+-----------+--+
    | id  | idbet | idmatch | hometeam | awayteam  |  |
    +-----+-------+---------+----------+-----------+--+
    | 349 |  3000 |      27 | TeamA    | TeamZ     |  |
    | 350 |  2456 |      39 | TeamC    | TeamG     |  |
    | 351 |  2818 |      20 | TeamW    | TeamB     |  |
    +-----+-------+---------+----------+-----------+--+

    GAMBLES
    +-----+---------+--------+-------+
    | _id | idmatch | gamble | idbet |
    +-----+---------+--------+-------+
    | 349 |      27 | WIN    |  3000 |
    | 350 |      27 | LOST   |  3000 |
    | 351 |      27 | DRAW   |  3000 |
    | 489 |    1345 | WIN    |  1981 |
    +-----+---------+--------+-------+

基于上述数据,考虑到我过滤了 ID = 3000 的赌注,我想要一个包含 TeamA vs TeamZ (ID = 27) 的列表项,并且在同一行中包含字符串 WIN、LOST、DRAW。然后再次遍历所有具有 IDBET = 3000

的匹配项

我不知道如何摆脱这种情况 希望有人能帮忙 干杯

我相信你想要的很简单:-

SELECT matchesbet._id, hometeam, awayteam, group_concat(gamble) AS gamble 
FROM matchesbet JOIN gambles ON  gambles.idmatch = matchesbet.idmatch
WHERE matchesbet.idbet = 3000 
GROUP BY matchesbet.idmatch 
ORDER BY matchesbet._id DESC;

即保留 GROUP 但不是选择列 gamble 选择 group_concat(gamble) AS gamble.

默认情况下,这些值由 , 分隔。但是,您可以通过第二个参数指定另一个分隔符,例如group_concat(gamble,' - ') 会 给:-

您可能会发现此 link 有帮助 Aggregate Functions