如何在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
答案

使用典型的JOINs你可以这样做:

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个以上的外键显示数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在sqlyog设置表的外键

Django:如何在手动表单字段中显示模型的外键对象作为选择

如何使值的外键显示在primefaces数据表中

使用 SQL 和 C# 将表 1 的主键分配为表 2 中的外键

mysql数据库怎么删除一个表的外键

java - 如何根据Java Servlet中的外键在一列中显示多个值?