我正在寻找一种有效的方法来从我的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;
^^必须为每个子表运行单独的查询。
答案 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."'
使用内部联接