语法
SELECT 列名
FROM 数据表1
LEFT JOIN 数据表2 ON 连接条件 [AND 筛选条件]
实例
<?php
$conf = require_once('conf.php');
$sql_connect = mysqli_connect($conf['host'],$conf['username'],$conf['password'],$conf['dbname']);
if(mysqli_connect_error($sql_connect)){
die('数据库连接失败'.mysqli_error($sql_connect));
}
$students = array(
array("student_id" => 1, "student_name" => "Alice", "major" => "Mathematics"),
array("student_id" => 2, "student_name" => "Bob", "major" => "Physics"),
array("student_id" => 3, "student_name" => "Carol", "major" => "Chemistry"),
array("student_id" => 4, "student_name" => "David", "major" => "Biology"),
array("student_id" => 5, "student_name" => "Eve", "major" => "Computer Science")
);
// grades 表
$grades = array(
array("grade_id" => 1, "student_id" => 1, "subject" => "Math", "grade" => 80),
array("grade_id" => 2, "student_id" => 1, "subject" => "Science", "grade" => 85),
array("grade_id" => 3, "student_id" => 2, "subject" => "Physics", "grade" => 92),
array("grade_id" => 4, "student_id" => 3, "subject" => "Chemistry", "grade" => 75)
);
//删除表原有数据,防止数据混淆
$drop_table = "DROP TABLE students,grades";
$drop_query = mysqli_query($sql_connect,$drop_table);
if(!$drop_query){
die('数据删除失败'.mysqli_error($sql_connect));
}
//创建第一个表
$create_table = "CREATE TABLE IF NOT EXISTS students(
student_id INT(6),
student_name VARCHAR(30),
major VARCHAR(30)
)";
$create_query = mysqli_query($sql_connect,$create_table);
if(!$create_query){
die('数据表1创建失败'.mysqli_error($sql_connect));
}
//创建第二个表
$create_tables = "CREATE TABLE IF NOT EXISTS grades(
grade_id INT(6),
student_id INT(6),
subject VARCHAR(30),
grade INT(6)
)";
$create_querys = mysqli_query($sql_connect,$create_tables);
if(!$create_querys){
die('数据表2创建失败'.mysqli_error($sql_connect));
}
//第一张表插入数据
foreach($students as $arr){
$insert = "INSERT INTO students VALUES ({$arr['student_id']},'{$arr['student_name']}','{$arr['major']}')";
$insert_query = mysqli_query($sql_connect,$insert);
}
if(!$insert_query){
die('数据表1数据插入失败'.mysqli_error($sql_connect));
}
//第二张表插入数据
foreach($grades as $arr){
$inserts = "INSERT INTO grades VALUES ({$arr['grade_id']},{$arr['student_id']},'{$arr['subject']}',{$arr['grade']})";
$insert_querys = mysqli_query($sql_connect,$inserts);
}
if(!$insert_querys){
die('数据表2数据插入失败'.mysqli_error($sql_connect));
}
//使用左连接将两张表格合并,从 "students" 表中选取所有学生的姓名以及对应的数学成绩,如果学生没有数学成绩,则显示为 "No grade"
$left_join = "SELECT student_name,COALESCE(grade,'No grade') AS grades
FROM students LEFT JOIN grades ON students.student_id = grades.student_id AND grades.subject = 'Math'";
$leftjoin_query = mysqli_query($sql_connect,$left_join);
if(!$leftjoin_query){
die('左连接失败'.mysqli_error($sql_connect));
}
echo '<table border = "1">';
//echo '<pre>';
echo '<tr><td>名字</td><td>分数</td></tr>';
while($arr = mysqli_fetch_array($leftjoin_query)){
// echo '<pre>';
// print_r($arr);
echo '<tr>';
echo "<td>{$arr['student_name']}</td>";
echo "<td>{$arr['grades']}</td>";
echo '</tr>';
}
echo '</table>';
mysqli_close($sql_connect);运行结果





还没有评论,来说两句吧...