我有4个名为Student, Applications, Company, Internships
的表。它们的主键是s_id, a_id, c_id, i_id
。进一步的实习有一个名为by_c_id的列,而应用程序有by_s_id,for_i_id。
因此,如何显示具有i_id =“ something”的实习申请。
使用c_id登录的用户应该看到
Student's Details
Answer in Application.
这将如何实现。
我知道由于这个问题,我可能会降低到零代表,但是这一切都很令人困惑。
Select Student's Detail from Student where by_s_id=s_id, select Answers from Applications, where for_i_id=i_id.
编辑
预期输出类似于在线求职平台,在该平台上,公司可以查看申请人的详细信息及其对问题的回答。
答复存储在应用程序中,申请人的详细信息存储在学生中。
另一个编辑
这就是我实现它的方式。我知道这是不正确的方法,但是我上学期错过了加入和查看课程。
$query= "SELECT * FROM APPLICATIONS
WHERE
for_i_id='$i_id'";
$query1= mysqli_query($dbhandle, $query);
$count= mysqli_num_rows($query1);
if(!$query1 || $count==0)
{
echo "No Applications to be displayed";
}
else
{
while($row=mysqli_fetch_assoc($query1))
{
echo $row['by_s_id'];
$query2 ="SELECT `Question1`,`Question2` FROM INTERNSHIPS
WHERE
i_id='".$row['for_i_id']."' ";
$query3= mysqli_query($dbhandle, $query2);
$s_id=$row['by_s_id'];
$query4= "SELECT * FROM STUDENT
WHERE
id='$s_id'";
$query5= mysqli_query($dbhandle,$query4);
if(!$query3)
{
echo 'MySQL Error: ' . mysqli_error();
exit;
}
最佳答案
这是使用LEFT JOIN将Student and Internships表加入Applications表的另一种方法:
SELECT Student.FirstName, Student.FamilyName, Applications.Answers FROM Applications
LEFT JOIN Student ON Applications.by_s_id=Student.id
LEFT JOIN Internships ON Applications.for_i_id=Internships.i_id
WHERE Internships.i_id='something';
在这种情况下,不需要任何外键。
关于mysql - 从多个表中提取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28318748/