我正在尝试创建单个查询以从多个表中收集信息。这是了解我需求的基础知识:
从表一收集的信息很简单。每个结果一行。这是主要结果,所以让我们只做变量p.id,p.name和p.street调用表道具p。
第二个表格中的信息,我称之为事件e也很简单。每个prop会有一个事件,它会加入p.id = e.pid。从该表中,我们需要e.event_start。
这里变得艰难。第三个表有两层多个结果:让我们称之为f。功能有四列:fid,pid,feature和desc。我们在p.id = f.pid上加入。
我需要的是这样的结果:
[0] PID
[1] name
[2] street
[3] event_start
[4] features
[0] lighting
[0] red
[1] orange
[0] sound
[0] guitar
[1] drum
[2] keyboard
现在,我一直在网上搜索解决方案,以为我可以使用select中的子查询来执行此操作:
SELECT p.id, p.name, p.street, e.event_start, (SELECT f.feature)
当然使用连接。从简单到困难,我还没有让它发挥作用。我看过GROUP_CONCAT,但那肯定没有给我我需要的东西......它会产生一个字符串等等。
有没有办法在一个查询中执行此操作?如果是这样,建议如何非常欢迎。
感谢您的时间。
答案 0 :(得分:0)
根据我的理解;你有三个表p,e,f,你需要使用JOIN从这些表中获取值。是这样的:
SELECT p.id,p.name,p.street,e.event_start,f.feature,f.desc
-- i'm not sure you need features from third table based on conditions. Use CASE WHEN in the select
--sorry didn't understand what you mentioned
FROM p JOIN e ON p.id=e.pid
JOIN f ON p.id=f.pid
WHERE --state your conditions