php - 通过链接表从数据库中选择值

标签 php mysql pdo

我正在寻找一种有效的方法来从 MySQL 数据库中的多个表中选择值,基于主表中的“ super ”值。

例如结构可能是这样的:

widgets         {id, widgetType, userId, pageId}
widgets_text    {parentId, `value`, style}
widgets_images  {parentId, src, link}

在上面的示例中,widgets_text 和 widgets_images 中的parentId 是表widgets 中的“Id”

如果我想根据输入的页面 ID (pageId) 选择所有文本和图像小部件,我将如何为此创建查询?

提前致谢。

(另外,我可能会补充一点,如果我想为新图像执行insert语句[例如],我将如何去做?)

编辑: 我现在正在做的事情的例子:

SELECT
    *
FROM
    widgets w
    INNER JOIN widgets_text wt ON wt.parentId = w.id
    INNER JOIN widgets_images wi ON wi.parentId = wt.parentId;

^^ 必须为每个子表运行单独的查询。

最佳答案

要加入文本和图像表,您可以使用以下语句,其中 X 是您输入的 pageID

select *
from widgets w
left join widgets_text wt on (wt.parentId = w.id)
left join widgets_images wi on (wi.parentId = w.id)
where w.pageId = X;

我正在使用LEFT JOIN,因为从您的问题来看,不清楚这些表是否确实包含与小部件行相关的行

关于php - 通过链接表从数据库中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31042869/

相关文章:

php - 用ajax请求渲染多个blade view sections

mysql - 在目录数据库中具有两个不同类别 ID 的产品 ID

mysql - AWS 2x.large 服务器 Apache 和 Mysql 配置没有很好地利用 CPU 和内存

PHP PDO 多选,多条件

PHP 从存储过程返回输出

php - kohana中的继承

php - JsTree v1.0 - 如何有效地操作后端的数据来渲染树并正确操作?

php - 如何访问放置在站点根目录之外的文件?

Mysql Fulltext 拒绝相似列结果