我有4个名为Student, Applications, Company, Internships
的表。他们的主键是s_id, a_id, c_id, i_id
。进一步的实习有一个名为by_c_id的列,应用程序有by_s_id,for_i_id。
那么如何通过i_id =""来显示实习申请表。
使用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;
}
答案 0 :(得分:1)
以下是另一种使用LEFT JOIN将学生和实习表加入应用程序表的方法:
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';
在这种情况下,不需要外键。
答案 1 :(得分:0)
假设:一个申请涉及一个实习,一个申请涉及一个学生。
Select S.*, A.* From Students S, Applications A, Internships I Where S.s_id = I.s_id And A.i_id = I.i_id And I.i_id = 'something'
毋庸置疑,您必须确保恰当地在四个表格中显示primary keys
和foreign keys
。如果存在one-to-many relationships
,则查询可能必须不同。我建议你阅读我在答案中使用的关键词,了解发生了什么。