【问题标题】:php mysql how to join two tablephp mysql如何连接两个表
【发布时间】:2014-04-02 22:47:07
【问题描述】:

我有这些代码:

<?php

$records = mysql_connect('localhost', 'root', '') or die(mysql_error());

mysql_select_db('records', $records);
if(isset($_GET['src']))
{

$sql = "SELECT * FROM students where studentnumber like '%{$_GET['src']}%'";
$cnt = mysql_num_rows(mysql_query($sql));
if ($cnt == 0)
{
echo "<script>alert('No Record Found');</script>";
}

$result = mysql_query($sql, $records);
echo "<table border='0' class='table table-striped table-bordered table-hover'>";
echo "<tr class='info'><td width='10%'>Name</td><td width='11%'>Course Yr-Sec</td><td width='10%'>Student Number</td><td width='10%'>Violation</td><td width='10%'>Punishment</td><td width='9%'>Violation Date</td><td width='7%'>Punishment Date</td><td width='5%'>CS Length</td><td width='4%'>CS Done</td><td width='4%'>CS Left</td><td width='17%'><center>Action</center></td></tr></tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>";
echo $row['Lastname'];
echo ", ";
echo $row['Firstname'];
echo " ";
echo $row['Middleinitial'];
echo "</td>";
echo "<td>";
echo $row['Course'];
echo " ";
echo $row['Year'];
echo "-";
echo $row['Section'];
echo "</td>";
echo "<td>";
echo $row['Studentnumber'];
echo "</td>";
echo "<td>";
echo $row['Violation'];
echo "</td>";
echo "<td>";
echo $row['Punishment'];
echo "</td>";
echo "<td>";
echo $row['Violationdate'];
echo "</td>";
echo "<td>";
echo $row['Punishmentstartdate'];
echo "</td>";
echo "<td>";
echo $row['CSlength'];
echo "</td>";
echo "<td>";
echo $row['CSDone'];
echo "</td>";
echo "<td>";
echo $row['CSLeft'];
echo "</td>";
echo "<td>";
echo "<a href='edit.php?no={$row['ID']}'><input type='button' name='edit' value='Edit' class='btn btn-success'></a>";
echo "   <a href='delete.php?no={$row['ID']}'><input type='button' name='delete' value='Delete' class='btn btn-danger'></a>";
echo "   <input type='button' name='view' value='View' class='btn btn-info'>";echo "</td>";
echo "</tr>";
}
echo "</table>";
}
else
{
$sql = 'SELECT * FROM students';
$result = mysql_query($sql, $records);
echo "<table border='0' class='table table-striped table-bordered table-hover'>";
echo "<tr class='info'><td width='10%'>Name</td><td width='11%'>Course Yr-Sec</td><td width='10%'>Student Number</td><td width='10%'>Violation</td><td width='10%'>Punishment</td><td width='9%'>Violation Date</td><td width='7%'>Punishment Date</td><td width='5%'>CS Length</td><td width='4%'>CS Done</td><td width='4%'>CS Left</td><td width='17%'><center>Action</center></td></tr></tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>";
echo $row['Lastname'];
echo ", ";
echo $row['Firstname'];
echo " ";
echo $row['Middleinitial'];
echo "</td>";
echo "<td>";
echo $row['Course'];
echo " ";
echo $row['Year'];
echo "-";
echo $row['Section'];
echo "</td>";
echo "<td>";
echo $row['Studentnumber'];
echo "</td>";
echo "<td>";
echo $row['Violation'];
echo "</td>";
echo "<td>";
echo $row['Punishment'];
echo "</td>";
echo "<td>";
echo $row['Violationdate'];
echo "</td>";
echo "<td>";
echo $row['Punishmentstartdate'];
echo "</td>";
echo "<td>";
echo $row['CSlength'];
echo "</td>";
echo "<td>";
echo $row['CSDone'];
echo "</td>";
echo "<td>";
echo $row['CSLeft'];
echo "</td>";
echo "<td>";
echo "<a href='edit.php?no={$row['ID']}'><input type='button' name='edit' value='Edit' class='btn btn-success'></a>";
echo "   <a href='delete.php?no={$row['ID']}'><input type='button' name='delete' value='Delete' class='btn btn-danger'></a>";
echo "   <input type='button' name='view' value='View' class='btn btn-info'>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
}
?>      

它包含搜索、编辑、删除和查看功能...现在我的问题是...我想通过列 studentnumber 加入数据库中的两个表... 我的表学生包含列姓氏,名字,中间名,课程,年份,部分,学生编号,违规,惩罚,违规日期,惩罚开始日期,CSlength,ID,CSDone,CSLeft ...现在我的另一个名为students2的表包含以下行ID, Studentnumber, Violation, Punishment, Violationdate, Punishmentstartdate, CSlength, CSDone, CSLeft...我想显示我的两个表中的信息...例如我想查看数据库中学生编号为 20101000 的所有记录...我必须内部加入表格吗? 我只是php的新手... 提前谢谢你... :)

【问题讨论】:

  • 请在您的问题上添加表结构和要获取的预期列。
  • 姓(varchar),名字(varchar),中间名(varchar),课程(varchar),年份(int),部分(文本),学生编号(varchar),违规(varchar),惩罚( varchar), Violationdate(date), Punishmentstartdate(date), CSlength(int), ID(int, primary key, auto increment), CSDone(int), CSLeft(int)... 我想获取两个表中的所有列...鉴于另一张桌子没有第一张桌子的所有信息...@AbhikChakraborty...

标签: php mysql


【解决方案1】:

这是LEFT JOIN。它将返回来自students1 的所有记录,以及来自students2 的任何记录,其中该记录与students1 中的记录具有相同的studentnumber

SELECT * FROM students1
LEFT JOIN students2
ON students1.studentnumber = students2.studentnumber
AND students1.studentnumber = 20101000

INNER JOIN 仅返回产生匹配的记录,因此您只会获得在 students1students2 中存在相同 studentnumber 的记录。根据您的 cmets,我相信这是您正在寻找的样式:

SELECT * FROM students1
INNER JOIN students2
ON students1.studentnumber = students2.studentnumber
AND students1.studentnumber = 20101000

如果您想了解如何使用 JOIN,我建议您尝试这两种语句来观察结果。然后尝试其他一些方法,也许使用this excellent tutorial on the Coding Horror Blog

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 2012-04-27
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2011-04-07
    相关资源
    最近更新 更多