我遇到了以下SQL分配的一些问题。我要检索在包含单词'xyz'的部分中注册的任何成员的ID,名字和姓氏。
到目前为止,我已经完成了以下工作:
SELECT m.id, p.firstname, p.lastname FROM member m
INNER JOIN person p ON m.id = p.id
WHERE m.id IN (SELECT id FROM membersection);
我如何从这里前进?我不知道如何从membersection表中检索sectionid,然后使用该ID从section id中获取节名称,以便我可以检查节名是否包含前面提到的单词。
构件:
ID member_number REGISTRATION_DATE
membersection:
MEMBERID sectionid
人
ID 名字 名字
部分:
ID 名称
答案 0 :(得分:2)
继续加入。最后使用LIKE
检查section.name
是否包含'xyz'
。
SELECT m.id,
p.firstname,
p.lastname
FROM member m
INNER JOIN person p
ON p.id = m.id
INNER JOIN membersection ms
ON ms.memberid = m.id
INNER JOIN section s
ON s.id = ms.sectionid
WHERE s.name LIKE '%xyz%';
答案 1 :(得分:2)
关于数据结构的问题,您的问题存在一些含糊之处;什么是主键和外键?
但是,做一些假设,你几乎就在那里,你可以将多个连接语句链接在一起:
select
m.id,
p.firstname,
p.lastname
from
member m
inner join person p on
m.id = p.id
inner join membersection ms on
m.id = ms.memberid
inner join section s on
ms.sectionid = s.id
where
s.name like '%xyz%'
答案 2 :(得分:1)
你的数据关系发生了什么并不是很明显,但这可能是你想要采取的基本路线(LEFT JOIN
,因为我不知道这种关系):
SELECT m.id, p.firstname, p.lastname, ms.sectionid
FROM member m
INNER JOIN person p ON m.id = p.id
LEFT JOIN section s ON m.id = s.id
LEFT JOIN membersection ms ON m.id = ms.memberid
WHERE s.name = 'xyz'