sql - 使用多对多连接 sqlite 中的表

标签 sql database sqlite

我有以下数据库架构:

create table people (
    id integer primary key autoincrement,
);

create table groups (
    id integer primary key autoincrement,
);

我已经在一个单独的文件中知道了哪些人属于哪些组(假设是 (person id, group id) 的元组)。我该如何构建我的数据库模式使得访问一个人的组很容易,也很容易访问组的成员?读取我目前拥有的元组既困难又慢,所以我希望它是数据库形式。我可以'将 member1member2 等作为列,因为组中的人数目前没有限制。

最佳答案

将文本文件移动到数据库表中

CREATE TABLE groups_people (
  groups_id integer,
  people_id integer,
  PRIMARY KEY(group_id, people_id)
);  

然后选择组 7 中的所有成员

SELECT * FROM people p  
  LEFT JOIN groups_people gp ON gp.people_id = p.id  
  WHERE gp.groups_id = '7';

然后选择第5个人所在的所有组

SELECT * FROM groups g  
  LEFT JOIN groups_people gp ON gp.groups_id = g.id  
  WHERE gp.people_id = '5';

关于sql - 使用多对多连接 sqlite 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549971/

相关文章:

java - 安卓Q : SQLite database in scoped storage

mysql - 在MySQL中使用存储过程时遇到两个问题

mysql - 分组连接以包含相应的数据

将两列合并为一列的 SQL 查询

javascript - 如何仅更新数组中的单个值

java - 即使 else if 条件通过,else 语句仍会运行

mysql - 在 sql 数据中查找唯一集

java - firebase如何获得 child 的 child ?

php - Doctrine PHP 问题

sqlite - Haskell:Persist.sqlite - 仅选择