如何加入一对多表?

时间:2015-01-13 07:58:49

标签: sqlite join android-sqlite

我在SQLite中有类似下面的场景: 一些物品,其价格在时间内存储在价格表中。项目的当前价格是:

  1. 其Price.fkItemID == Item.id
  2. 这是最近的匹配(在标准1中匹配的人中具有最大ID)
  3. 那么如何在SQLite中加入以下表格,以便获得一个包含当前价格的项目列表?

    此外,有多个连接,是否会导致性能下降? enter image description here

1 个答案:

答案 0 :(得分:1)

要获取具有最大ID的行,请使用按ID排序的相关子查询,并仅获取第一个返回的行:

SELECT name,
       (SELECT price
        FROM Table2
        WHERE fkItemID = Table1.id
        ORDER BY id DESC
        LIMIT 1
       ) AS current_price
FROM Table1

如果有一个索引允许在fkItemID上进行搜索,然后在id上进行排序,则此查询会很有效:

CREATE INDEX Table2_fkItemID_id ON Table2(fkItemID, id);

(如果历史价格不多,则无需为id列编制索引。)