Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在连接到其他两个表时从3个表中进行选择_Php_Mysql_Join - Fatal编程技术网

Php 如何在连接到其他两个表时从3个表中进行选择

Php 如何在连接到其他两个表时从3个表中进行选择,php,mysql,join,Php,Mysql,Join,我有一个名为lwim_projects的表,其中包含列project_id,一个名为lwim_designers的表,其中包含列designer_id,还有一个名为lwim_images的表,其中包含列image_id 我还有两个连接表,分别称为lwim_join_designers_projects和lwim_join_projects_images lwim_join_designers_项目包含以下列: dp_id, 设计师id和 项目编号 lwim_join_项目_图像包含以下列: 皮尤

我有一个名为lwim_projects的表,其中包含列project_id,一个名为lwim_designers的表,其中包含列designer_id,还有一个名为lwim_images的表,其中包含列image_id

我还有两个连接表,分别称为lwim_join_designers_projects和lwim_join_projects_images

lwim_join_designers_项目包含以下列:

dp_id, 设计师id和 项目编号 lwim_join_项目_图像包含以下列:

皮尤id 项目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表中进行选择,也不需要加入images表,反之亦然,但似乎不想同时适用于这两个表

谁能解释一下我可能出了什么问题

亲切问候,, 丹尼尔

试试这个:

$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 AND lwim_join_designers_projects.project_id = lwim_projects.project_id
INNER JOIN lwim_join_projects_images ON lwim_join_projects_images.image_id = lwim_images.image_id AND lwim_join_projects_images.project_id = lwim_projects.project_id
ORDER BY date_repinned DESC
LIMIT 20");

我已将where子句放在内部JOIN ON语句中,这可能有助于…

您正在连接5个表。这通常意味着您需要4个内部联接,除非您以不寻常的方式联接。尝试在FROM子句中只使用一个表,然后使用四个内部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");

使用这些名称很难确保我没有输入错误。

您好,非常感谢您的回答,但不幸的是,我仍然收到相同的错误警告:mysql\u fetch\u assoc希望参数1是资源,布尔值在…@Danielormrod中给出,请尝试查看mysqli给出的错误信息。您是否尝试通过PHPMYADMIN将其直接运行到服务器上?您好,Mathlight,我尝试将其作为mysqli_查询运行,并警告以下错误:mysqli_查询至少需要2个参数,其中1个在。。。警告:mysql_fetch_assoc期望参数1为资源,在中给出空值。。。然后,我按照您的建议尝试通过phpmyadmin运行它,它给出的错误是1054-on子句中的未知列“lwim_designers.designer_id”,这非常奇怪,因为它确实存在@Danielormrod,您应该使用mysqli_*函数而不是mysql_*函数,因为mysql_*已被弃用。更改是必须将DB连接指定为param 1,将查询指定为param 2。你是不是试着用回帖在colloms周围?嗨Mathlight,我把它和Walter Mitty的答案分类了我会尽快把答案贴出来。谢谢你的建议,我将从现在开始使用mysqli的功能,谢谢你的回答,这很有效,你又帮我省了3天的头疼。我会发布我的答案它不允许我在8小时内发布答案,我会在8小时后发布。所以,你有没有想出工作代码?如果你能根据我的提示自己解决,那就更好了!嗨,是的,很有效谢谢,我已经勾选了答案。非常感谢你,沃尔特