[英]mysql : a pivot table handler request?
我有一个mysql问题:
与MySQL一起使用php我实际上有一个看起来像这样的模式:
3桌
模组
module_has_theme(数据透视表)
主题
这背后的想法是使用主题显示我的应用程序的模块,如果有,则没有,然后在额外的类别(其他)中显示它们。
因此,假设我用一些模块填充了模块表:mod1,mod2,mod3,mod4,mod5
然后我创建一些主题:水果,动物,数字,人类
然后在数据透视表中,将mod1与动物绑定。
然后我想要这样的请求结果(或类似的东西)
结果:
水果=> null,
动物=> mod1,
数字=> null,
人=> null,
其他=> mod2,mod3,mod4,mod5
实际上,我的代码使用了2个mysql请求和一个php循环来执行此操作,
(
第一个请求占用所有模块
第二个请求采用所有具有主题的模块(使用两个内部联接)
一个php循环,使用我上面想要的两个结果数组来组织模块
)
现在我想知道是否会有一个神奇的mysql请求在一个单一请求中执行相同的工作?
如果您知道,请告诉我;)
阅读内联接和外联接
尝试类似...
SELECT module AS M
INNER JOIN module_has_theme AS MT
ON M.module_id = MT.module_id
LEFT JOIN theme AS T
ON T.theme_id = MT.theme_id
最好直接在MySQL客户端(例如toadmysql)中运行此类查询,以测试您是否获得了正确的结果。
AS M
, AS MT
, AS T
是表名的别名,以帮助缩短查询时间。 祝好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.