简体   繁体   English

如何合并两个表中的两个选择?

[英]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_membersmembers

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_namem_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? 这不是必需的 ,但是现在我是否想加入表格schoolss_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM