mysql - 构建查询以根据另一个表选择数据

标签 mysql

表格 enter image description here

示例数据

墙壁

wall_id   wall_name
  1        wall_1
  2        wall_2
  6        wall_6

wall_categories

wall_id   category_id
  1           2
  2           1
  6           1
  6           2

类别

category_id  category_name
  1            Wallpaper
  2            Photography

html

<a href="file.php?category=wallpaper">Wallpaper</a>
<a href="file.php?category=photography">Photography</a>

我需要做的是当用户单击 Wallpaper 时链接,我想要带有 wallpaper 的图像作为要显示的类别与 photography 相同。我已经构建了一个初始查询,但当我使用联接时它会生成重复的记录,必须添加其他内容才能使其正常工作。

    SELECT DISTINCT walls.wall_id, walls.wall_name, walls.wall_views, walls.upload_date,
 categories.category_name FROM categories INNER JOIN wall_categories ON 
wall_categories.category_id=categories.category_id INNER JOIN walls ON 
walls.wall_id=wall_categories.wall_id;

或自 category_id是固定的,我们可以使用wallswall_categories仅表。那么我们可以使用以下 html。

<a href="file.php?category=1">Wallpaper</a>
<a href="file.php?category=2">Photography</a>

最佳答案

您没有通过 category_id 限制查询,因此它会返回具有关联类别的所有墙记录。

SELECT DISTINCT walls.wall_id, walls.wall_name, walls.wall_views, walls.upload_date,
 categories.category_name FROM categories INNER JOIN wall_categories ON 
wall_categories.category_id=categories.category_id INNER JOIN walls ON 
walls.wall_id=wall_categories.wall_id
WHERE category.category_id = ?
;

然后将 ? 绑定(bind)到用户选择的相应类别 ID。

关于mysql - 构建查询以根据另一个表选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008833/

相关文章:

php - 在 Yii2 中以模型而不是关联数组的形式获取命令查询结果,或将其转换为模型

C# MySQL - 2 个查询之间的差异

mysql - 如何使用 JOIN 代替 IN 子句

mysql - 组合到过程中的语句

mysql - 用于测试连接性的通用 SELECT 查询

mysql - 使用自动递增的唯一 id 主键作为另一个表中的外键

php - mysqli_affected_rows,mysql减去2列错误

php - MYSQL 从同一张表中选择标签关联的 id

mysql - 当名称略有不同时按名称合并 mysql 行

mysql - 行数没有不同