我有以下sqlite架构:
cons
我的widget_grps中的数据如下所示:
symbol
在小部件中:
atom
因此,您可以看到group_id和member_id字段都指向窗口小部件表,但指向不同的值。我正在尝试编写一个返回如下数据的查询:
sqlite> .schema
CREATE TABLE widgets
(
id integer primary key AUTOINCREMENT,
pnum varchar(10),
destvarchar(100),
class varchar(10),
name varchar(255),
grp integer
);
CREATE TABLE widget_grps
(
id integer primary key AUTOINCREMENT,
group_id integer,
member_id integer,
FOREIGN KEY (group_id) REFERENCES widgets(id),
FOREIGN KEY (member_id) REFERENCES widgets(id)
);
你能指出我正确的方向吗?
编辑1
sqlite> select * from widget_grps limit 2;
35|2103|304
36|2103|305
sqlite>
编辑2
sqlite> select * from widgets where id=2103;
2103|90042|Group||Widget Group 1|1
sqlite> select * from widgets where id=304;
304|11681|dest1222|smfass|Johnn Doe|0
sqlite>
答案 0 :(得分:2)
我认为以下查询应该产生所需的结果:
select wg.pnum as group_pnum, g.group_id, ww.pnum as widget_pnum, g.member_id
from widget_grps g
left join widgets wg on g.group_id = wg.id
left join widgets ww on g.member_id = ww.id
如果您只想选择group_id
中member_id
和widget_grps
不同的项目,请添加以下条件:
where g.group_id <> g.member_id