php - 如何从 3 个表中选择,同时加入另外 2 个表

标签 php mysql join

我有一个名为 lwim_projects 的表,其中包含 project_id 列(除其他外),一个名为 lwim_designers 的表,包含列 designer_id (除其他外)和一个名为 lwim_images 带有 image_id 列(以及其他列)。

我还有 2 个连接表,名为 lwim_join_designers_projectslwim_join_projects_images

lwim_join_designers_projects 包含以下列:

  • dp_id,
  • designer_id 和
  • 项目编号

lwim_join_projects_images 包含以下列:

  • pi_id
  • project_id 和
  • image_id。

我想将连接表与前面提到的表连接起来,但不幸的是似乎无法连接两者,只能连接其中一个。

下面的代码在我看来是正确的(并且尝试了很多很多的组合)。

$result = mysql_query("SELECT * FROM lwim_projects, lwim_designers, lwim_images
INNER JOIN lwim_join_designers_projects ON lwim_join_designers_projects.designer_id = lwim_designers.designer_id
INNER JOIN lwim_join_projects_images ON lwim_join_projects_images.image_id = lwim_images.image_id
WHERE lwim_projects.project_id = lwim_join_designers_projects.project_id
AND lwim_projects.project_id = lwim_join_projects_images.project_id
ORDER BY date_repinned DESC
LIMIT 20");

我也试过没有第二个 where 语句。

就像我说的那样,无需从 lwim_images 表中选择并加入图像表即可工作,反之亦然,但似乎不想同时为两者工作。

任何人都可以阐明我可能出错的地方吗?

亲切的问候, 丹尼尔

最佳答案

您正在加入 5 个表。这通常意味着您需要 4 个 INNER JOINS,除非您以不寻常的方式加入。尝试在 FROM 子句中仅使用一个表,后跟四个 INNER JOIN 子句来重写您的查询。每个 INNER JOIN 都需要一个 ON 条件。

如果我正在调试它,我会在将查询嵌入代码之前尝试使用交互式 SQL 正确查询。

编辑以包含答案(未经测试):

$result = mysql_query("SELECT * 
FROM lwim_designers
INNER JOIN lwim_join_designers_projects ON
 lwim_join_designers_projects.designer_id = lwim_designers.designer_id
INNER JOIN lwim_projects ON 
  lwim_projects.project_id = lwim_join_designers_projects.project_id
INNER JOIN lwim_join_projects_images ON
  lwim_join_projects_images.project_id = lwim_projects.project_id
INNER JOIN lwim_images ON
  lwim_images.image_id = lwim_join_projects_images.image_id 
ORDER BY date_repinned DESC
LIMIT 20");

这些名称很难确保我没有打错字。

关于php - 如何从 3 个表中选择,同时加入另外 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548506/

相关文章:

MySQL - 连接 a 或 b

php - BasicNetwork.performRequest : Unexpected response code 403 for http://localhost/database/login. php

php - JQuery td 内联编辑 -> 输入后转到下一个编辑单元格?

MySQL - 将更改从一个表插入到另一个表

MySQL 哪种排序规则可以将西里尔字母和拉丁字母进行比较?

如果我们省略服务器 ID,MySQL 5.7 中的 MySQL --server-id 设置什么值。

mysql - SQL 查询未对结果进行分组

php - Paypal PHP SDK Credications and Authentication,我无法让它工作

php - 使 is_purchasable Hook 与 Woocommerce 中的变体和产品标签一起使用

mysql - 从第一个表的主键和第二个表的外键获取记录