[英]How can i combine two selects from two tables?
This is my DB schema: 这是我的数据库模式:
CREATE TABLE `members` (
`m_id` int NOT NULL AUTO_INCREMENT,
`m_name` varchar(355),
`m_email` varchar(20) UNIQUE,
PRIMARY KEY (`m_id`)
);
CREATE TABLE `schools` (
`s_id` int NOT NULL AUTO_INCREMENT,
`s_name` varchar(355)
);
CREATE TABLE `schools_members` (
`sm_id` int NOT NULL AUTO_INCREMENT,
`sm_school_id` int NOT NULL,
`sm_member_id` int NOT NULL,
FOREIGN KEY (sm_school_id) REFERENCES schools(s_id),
FOREIGN KEY (sm_member_id) REFERENCES members(m_id)
);
I need to display all members for a selected school by a given school id ( $schoolId
). 我需要通过给定的学校ID( $schoolId
)显示所选学校的所有成员。 So i assume that the query will touch on schools_members
and members
. 所以我认为查询将触及schools_members
和members
。
I believe the logic is: select all the sm_member_id
where sm_school_id
= $schoolId
from table schools_members
and then SELECT m_name
and m_email
for each m_id
(member id) from table members
that is IN the last query result. 我认为逻辑是:从表schools_members
选择所有sm_member_id
,其中sm_school_id
= $schoolId
,然后从表members
中的每个m_id
(成员ID)中选择m_name
和m_email
,这是最后一个查询结果。
This is not required , but now im curious if i want to join to this result the s_name
(school name) from table schools
so that each member displays the name of school also? 这不是必需的 ,但是现在我是否想加入表格schools
的s_name
(学校名称),以便每个成员也显示学校名称,我对此感到好奇。
You could just use a join between schools_members and members 您可以在school_members和member之间使用联接
select m.m_name, m.m_email
from schools_members sm
inner join members m ON m.m_id = sm.sm_member_id
where sm.sm_school_id = Your_value
and for school name 和学校名称
select m.m_name, m.m_email, s.s_name
from schools_members sm
inner join members m ON m.m_id = sm.sm_member_id
inner join schools s on s.s_id = sm.sm_school_id
where sm.sm_school_id = Your_value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.