从多个表中提取数据

从多个表中提取数据

我有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/

10-11 20:11