如何在sql中使用2个以上的外键显示数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sql中使用2个以上的外键显示数据?相关的知识,希望对你有一定的参考价值。
我的数据库中有4个表,即学生,委员会,活动,evtstatus。我需要从每个表中检索一些数据。
我已经在mysqli中尝试了它仍然会得到一些错误
警告:mysqli_fetch_array()要求参数1为mysqli_result,在第106行的C: xampp htdocs Student index.php中给出布尔值
学生:
student_id | name | member_type
10 | Ali | Not A Member
14 | James | Member of Taekwando
15 | Bakar | Not A Member
委员会:
committee_id | email | image |
1 | abc@gmail.com | pic.jpg |
2 | abccd@ymail.com | pic1.jpg |
3 | shdhs@yahoo.com | pic2.jpg |
事件:
event_id | event_name | start_date | committee_id |
11 | Sport Meeting | 2018-12-19 20:00:00 | 1 |
12 | Yamacha Tonite | 2018-12-18 21:00:44 | 1 |
13 | Family Gathering | 2018-12-17 22:00:44 | 3 |
evtstatus:
evt_id | event_id | student_id | status_info |
111 | 11 | 10 | Not Going |
112 | 12 | 14 | Going |
113 | 13 | 15 | Going |
活动和委员会中的'committee_id'是相同的。事件中的'event_id'和evtstatus也是一样的。
我想选择在committee_id == 1下的事件名称,start_date,student_id,member_type,status_info
所以查询结果应该是(在这种情况下)
Sport Meeting | 2018-12-19 20:00:00 | 10 | Not A Member | Not Going
Yamacha Tonite| 2018-12-18 21:00:44 | 14 | Member of Taekwando | Going
答案
使用典型的JOIN
s你可以这样做:
select
e.event_name,
e.start_date,
es.student_id,
s.member_type,
es.status_info
from evtstatus es
join student s on s.student_id = es.student_id
join event e on e.event_id = es.event_id
join committee c on c.committee_id = e.committee_id
where e.committee_id = 1
以上是关于如何在sql中使用2个以上的外键显示数据?的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何在手动表单字段中显示模型的外键对象作为选择