gpt4 book ai didi

java - Android查询多对多关系

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:43 24 4
gpt4 key购买 nike

通过阅读,我了解到实现多对多关系的方法是拥有一个单独的“路由表”。这是我如何完成此操作的示例:

CREATE TABLE Places (_id INTEGER PRIMARY KEY, name TEXT);

CREATE TABLE Tags (_id INTEGER PRIMARY KEY, name TEXT);

CREATE TABLE RoutingTable_PlacesTags (places_id INTEGER, tag_id INTEGER, FOREIGN KEY(places_id) REFERENCES Places(_id), FOREIGN KEY(tag_id) REFERENCES tags(_id));

在我的数据库助手类中,我希望有一个方法可以将 Cursor 返回到 Places 中具有特定标记的所有行,Cursor fetchPlaces(int tagID)。 (允许在应用内按标签过滤)

实现此方法的正确/最佳方法是什么?

我打算查询 RoutingTable_PlacesTags,使用返回的 Cursor 为 Places 构建一个数组/ID 列表,然后使用另一个我称之为传递 ID 列表/数组的方法来返回它们。虽然我知道这会起作用,但我确定必须有一种更清洁的方法来做到这一点?

谢谢。

最佳答案

我想你可能指的是多对多关系而不是一对多。

假设您这样做,您可以使用一条 SQL 语句执行查询:

SELECT name
FROM Places
WHERE EXISTS(
SELECT *
FROM RoutingTable_PlacesTags
WHERE RoutingTable_PlacesTags.places_id = Places._id
AND EXISTS (
SELECT *
FROM Tags
WHERE Tags._id = RoutingTable_PlacesTags.tag_id AND Tags.name = 'Searched for tag name here'
))

关于java - Android查询多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com