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

时间:2015-06-25 06:33:30

标签: php mysql pdo

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

例如,结构可能是这样的:

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

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

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

提前致谢。

(另外我可以补充说,如果我想为新图像做一个插入语句[例如],我该如何去做呢?)

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

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

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

2 个答案:

答案 0 :(得分:2)

要加入文本和图像表,您可以使用以下语句,其中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,因为根据您的问题,这些表格是否肯定会有关于小部件行的行

,这一点尚不清楚

答案 1 :(得分:1)

SELECT widgets.*,widgets_text.*,widgets_images.*
FROM widgets
INNER JOIN widgets_text on widgets_text.parentId = widgets.id
INNER JOIN widgets_images on widgets_images.parentId = widgets.id
WHERE widgets.pageId = '".$page_value."'

使用内部联接