Php 如何在连接到其他两个表时从3个表中进行选择
我有一个名为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和 图像标识。 我想将连接表与前面提到的表连接起来,但不幸的是,似乎无法同时连接这两个表,只能连接其中一个 下面的代码在我看来是正确的,并且已经尝试了很多组合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_项目_图像包含以下列: 皮尤
$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小时后发布。所以,你有没有想出工作代码?如果你能根据我的提示自己解决,那就更好了!嗨,是的,很有效谢谢,我已经勾选了答案。非常感谢你,沃尔特