我正在尝试加入一个dataofbirth列,该列位于studentdetails表中,另一个表名为college table,我需要第二个表中学生的dataofbirth。这是我的查询。
$result = mysqli_query($con,"SELECT `DateofBirth` FROM `studentdetails` INNER JOIN `college`
ON `studentdetails`.StudentID = college.StudentID")or die ("Error: ".mysqli_error($con)");
因此,当我为第二个表获取我的数组时,我将能够获得他们的数据生成,而无需加入他们的身体。 谁能发现我的语法有什么问题?
谢谢
答案 0 :(得分:1)
如果要连接两个表,则必须提供要包含在连接/组合表中的两个表的列列表。所以:
尝试此操作(将[add other columns ..]位替换为您可能要包含的其他列。并注意表别名如何使用它们:
$result = mysqli_query($con,"SELECT s.DateofBirth, c.StudentID, [add other columns from college table here...] FROM studentdetails sd INNER JOIN college c
ON sd.StudentID = c.StudentID")or die ("Error: ".mysqli_error($con)");
哦,你可能想要使用mysqli而不是旧的,不赞成的,丑陋的,缓慢的,不安全的,自杀的想法导致mysql_扩展;)
答案 1 :(得分:0)
应该是(来自评论: dateofbirth 仅存在于studentdetails中)
$result = mysqli_query($con,"SELECT sd.DateofBirth FROM studentdetails as sd INNER JOIN college as c
ON sd.StudentID = c.StudentID")or die ("Error: ".mysqli_error($con)");
答案 2 :(得分:0)
考虑到我们只出生一次(除了凤凰),学生与他们的出生日期之间的关系应该是1:1
关系。换句话说,可以在DateOfBirth
表中声明列college
。然后选择他们的出生日期,您可以这样做:
select DateOfBirth
from college
where StudentID = :id
但是我看到你已经有了另一张表来存储他们的出生日期,所以你可以联系他们选择他们的出生日期:
select d.DateOfBirth
from college c,
studentdetails d
where c.StudentID = d.StudentID;
或者:
select d.DateofBirth
from studentdetails d
inner join college as c
on d.StudentID = c.StudentID;
但是上面的查询会排除{* 1}}中没有记录的学生。要选择所有具有各自出生日期的学生,您可以这样做:
studentdetails
即使select c.StudentID,
s.DateOfBirth
from studentdetails d
right join college c
on d.StudentID = c.StudentID;
表格中没有出生日期,right join
这个studentdetails
查询也会得到所有学生。right join
cmd就在学院上学。{/ p>
您可以自由地找出最适合您的选项,但我建议您将此DateOfBirth
列放在college
表格中来规范化此数据模型。