php - MySQL SELECT 查询 - 排除某些行

标签 php mysql

我有一个包含大量轮胎品牌和信息的数据库。我有一个名为 Accepted_Brands 的表,它有 shop_id 和 brand_id,所以它告诉我哪个商店有什么品牌。

tire_brands 表只有一个 ID 和一个名称,列出了所有轮胎品牌。

在该特定商店的页面上,我列出了他们销售的所有轮胎品牌......并且可以选择添加新品牌。

添加新品牌弹出窗口只有一个下拉菜单,这是我的代码:

    if ($result = $mysqli->query('SELECT id, name FROM tire_brands ORDER BY name')) { 

        while( $row = $result->fetch_assoc()){ 
            $tire_name = $row['name'];
            $tire_id = $row['id'];

            echo "<option value=\"".$tire_id."\">".$tire_name."</option>";
        }

因此,它会在下拉列表中显示所有轮胎品牌,他们可以选择将其添加到他们接受的列表中。问题是它显示了所有这些,即使它已经被选中。所以我可以添加两个相同的品牌。

有没有办法将它从 SELECT 查询中排除,或者有其他方法让下拉列表只能显示他们未使用的品牌列表?

谢谢!

最佳答案

你必须使用这样的子查询:

 if ($result = $mysqli->query('SELECT id, name FROM tire_brands where id NOT IN (select shop_id from Accepted_Brands) ORDER BY name')) { 

        while( $row = $result->fetch_assoc()){ 
            $tire_name = $row['name'];
            $tire_id = $row['id'];

            echo "<option value=\"".$tire_id."\">".$tire_name."</option>";
        }

这只是一个例子,我不知道你如何在你的 Accepted_Brands 上插入数据,以及你如何理解一个 id,brand 是否已经在你的 Accepted_Brands 表中

关于php - MySQL SELECT 查询 - 排除某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742566/

相关文章:

php - 解析多行声明版本和编码的 XML 文档时出现 SimpleXML 错误

php - make :auth 后迁移 Laravel 时出错

php - 转换脚本

javascript - flickr 相当于 source.unsplash.com

php - 自 Joomla 3.4.2 起,保存、保存并关闭和关闭在 Jumi 模块上不起作用

php - MySQL。随机行。将行转换为 PHP 数组。

php - 是否所有输入字段都容易受到 sql 注入(inject)的攻击?

php - 一般错误 : 1364 Field 'location' doesn't have a default value

PHP MySQL SUM 表中带有 0/1 标记的多列

MySQL 结束循环错误