![](/img/trans.png)
[英]How to use select command by another Select result? (mysql, php)
[英]How to Select from the result of another select mysql and php
我試圖解決這個問題,但它不起作用
我有兩個表“課程”和“課程通過”
如果當前用戶通過與否,我想檢查課程中的每節課
所以我需要從每個結果的課程表中進行選擇,以檢查每個結果的“lessons_pass”“狀態”
CREATE TABLE `lessons` (
`id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`cat_id` int(10) default NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `lessons_pass` (
`id` int(10) unsigned NOT NULL auto_increment,
`user_id` int(11) default NULL,
`lesson_id` int(11) default NULL,
`status` int(11) NOT NULL default '2',
PRIMARY KEY (`id`)
)
我當前的代碼對我不起作用
<?
$user_id = 4;
$sql = "SELECT id, title, cat_id FROM lessons";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
$lesson_id = $row["id"];
// my try for the next table
$sql_two = "SELECT * FROM lessons_pass where user_id='$user_id' and lesson_id='$lesson_id' ";
$result_two = $conn->query($sql_two);
if ($result_two->num_rows > 0) {
while($row_two = $result_two->fetch_assoc()) {
echo "id: " .$lesson_id . " - Status For user : " . $result_two["status"]. "<br>";
}
} else {
echo "0 results";
}
}
} else {
echo "0 results";
}
?>
您似乎正在尋找join
:
select l.*, lp.status
from lessons l
left join lessons_pass lp
on lp.lesson_id = ll.id
and lp.user_id = ?
你沒有告訴你想要給定用戶沒有參加的課程的哪個結果:這將返回一個狀態為null
的行。 如果您不想要那樣,請使用inner join
而不是left join
。
根據@GMB 查詢,您的 PHP 代碼可能是下一個:
<?php
$user_id = 4;
$conn = $mysqli;
$sql = "SELECT
`l`.`id` `lesson_id`,
`l`.`title` `lesson_title`,
`u`.`firstname`,
`u`.`lastname`,
IFNULL(`lp`.`status`, 'not pass') `status`
FROM `lessons` `l`
LEFT JOIN `lessons_pass` `lp`
ON `lp`.`lesson_id` = `l`.`id` AND `lp`.`user_id` = " . (int)$user_id
." LEFT JOIN `users` `u` ON `lp`.`user_id` = `u`.`id`";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while ($row = mysqli_fetch_assoc($result)) {
echo "Lesson ID: " . $row["lesson_id"]
. " Lesson title: {$row['lesson_title']}"
. " Name: " . $row["firstname"]. " " . $row["lastname"]
. " Status: {$row['status']}"
. "\n";
}
} else {
echo "0 results";
}
你可以在PHPize.online上測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.