0
我想创建一个查询来从多个表中收集信息。这里的基本知识,了解我的需求:选择数组,子查询和多行结果
收集的信息从表中的一个非常简单。每个结果一行。这是主要结果,所以我们只需制作变量p.id,p.name和p.street即可调用表格道具p。
第二个表,我会称之为事件E也将是简单的信息。每个道具将会有一个事件,并且它会加入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 p.id, p.name, p.street, e.event_start, (SELECT f.feature)
当然使用连接。从简单到困难,我没有得到它的工作。我已经看过GROUP_CONCAT,但这绝对不会给我我需要的东西......它使单个字符串等等。
有没有办法在单个查询中做到这一点?如果是这样,建议如何非常受欢迎。
谢谢你的时间。
排序,但不完全。您描述的方法会给我们多行:每个特征/值组合的单独一行。我需要的是一行pid,前两个表中的所有其他信息以及特征表中的每个特征/值组合。每行p.id一行 – dglickler 2015-04-02 17:52:30
它是行还是列?对于不同列中的值出现在同一列中,可以在select子句中使用concat:CONCAT(f.feature,',',f.desc)。 – user4704642 2015-04-02 18:06:49
我结束了使用CONCAT_W以逗号和分号分隔的GROUP_CONCAT,它工作。 – dglickler 2015-04-02 18:21:47