【问题标题】:How to join 2 tables that share 1 colum with same ID and add WHERE clause to it如何连接 2 个共享 1 列具有相同 ID 的表并向其添加 WHERE 子句
【发布时间】:2014-04-20 17:19:03
【问题描述】:

好吧,标题说明了一切。

我已经尝试了几件事,直到现在我都没有这个:

SELECT *
FROM ".$CFG['table']['menuaddons']." m
JOIN ".$CFG['table']['addons']." t1 ON m.addonparentid = t1.id
JOIN ".$CFG['table']['addons']." t2 ON m.addonparentid = t2.id
";

这将返回所有项目。现在我只想显示m.addonparentid 是变量$parentid 的项目。

当我这样做时:

SELECT *
FROM ".$CFG['table']['menuaddons']." m
JOIN ".$CFG['table']['addons']." t1 ON m.addonparentid = t1.id
JOIN ".$CFG['table']['addons']." t2 ON m.addonparentid = t2.id
WHERE m.addonparentid = '".$menuaddonsid."'
";

我得到一个空数组?当它起作用时,我想在.$CFG['table']['addons']. 中名为addonsort 的列名上对DESC 进行排序。

我已经检查了有关加入的所有信息,但找不到如何执行此操作。

【问题讨论】:

  • 能否给出三个表的架构?

标签: php mysql join where


【解决方案1】:

在不知道 a) 你的意图和 b) 所涉及的表的架构的情况下解决这个问题有点棘手。为什么查询中需要两次加载项表?

也许这会起作用?

$query = "SELECT *
FROM " . $CFG['table']['menuaddons'] . " m
INNER JOIN " . $CFG['table']['addons'] . " t1 ON m.addonparentid = t1.id
WHERE m.addonparentid = " . $parentid . "
ORDER BY t1.addonsort DESC";

如果没有,请发布更多信息。 一旦你让它工作,请考虑将其转换为使用PDO - 当前查询易受 SQL 注入攻击,具体取决于变量的来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多