选择数组,子查询和多行结果

时间:2015-04-02 17:13:47

标签: mysql arrays join subquery

我正在尝试创建单个查询以从多个表中收集信息。这是了解我需求的基础知识:

从表一收集的信息很简单。每个结果一行。这是主要结果,所以让我们只做变量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,但那肯定没有给我我需要的东西......它会产生一个字符串等等。

有没有办法在一个查询中执行此操作?如果是这样,建议如何非常欢迎。

感谢您的时间。

1 个答案:

答案 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
相关问题