在我的SQL数据库中,我有一个表namend" orders"。正如你所看到的那样,人们订购了#34; cat"," dog"和"青蛙":
id | name
---------
1 | cat
2 | dog
3 | frog
我可以这样打印我的订单:
$pdo = Database::connect();
$sql = 'SELECT * FROM orders ORDER BY id DESC';
foreach ($pdo->query($sql) as $row) {
echo($row['name'].' ');
}
得到结果:猫狗青蛙
现在我有另一张名为" inventory":
的库存表id | name
---------
1 | cat
2 | dog
3 | frog
4 | duck
我的网站上有一个选择框,显示我的库存
<select name="animals">
<?php
$sql = 'SELECT * FROM inventory ORDER BY id DESC';
foreach ($pdo->query($sql) as $row) {
echo('<option value="'.$row['name'].'">'.$row['name'].'</option>');
}
?>
</select>
我现在要做的是在我的选择框内显示只有我的订单表中没有的库存。 这意味着在这种情况下我的选择框应该只有选项&#34; duck&#34;。
如何更改我的选择框以实现我的需要。
答案 0 :(得分:1)
在查询中添加子选择:
SELECT * FROM inventory WHERE name NOT IN (SELECT name FROM orders) ORDER BY id DESC
答案 1 :(得分:0)
另一种解决方案是使用UNION ALL并检查只出现一次的名称
SELECT name
FROM
(
SELECT tableOrdered.name
FROM tableOrdered
UNION ALL
SELECT TableInventory.name
FROM TableInventory
)t
GROUP BY name
HAVING COUNT(*) = 1
ORDER BY name