我的要求是
我有一张包含合作伙伴和活动详情的表格,每个合作伙伴都有多个活动。现在我需要根据partnerid获取活动详情,意味着
partner1->event1
partner2->event1
.......
partnern->event1
Partner1->event2
partner2->event2
........
partnern->event2
...
.....
partner1->eventn
partner2->eventn
......
这里每个伙伴都有自己的事件数量。请给我建议,我使用的是mysql
这是我的表格结构
CREATE TABLE `event` (
`eventid` varchar(30) NOT NULL DEFAULT '',
`partnerid` varchar(30) DEFAULT NULL,
PRIMARY KEY (`eventid`),
KEY `partnerid` (`partnerid`),
KEY `locationid` (`locationid`),
CONSTRAINT `event_ibfk_1` FOREIGN KEY (`partnerid`) REFERENCES `partnerprofile` (`userid`),
CONSTRAINT `event_ibfk_2` FOREIGN KEY (`locationid`) REFERENCES `location` (`locatinid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 0 :(得分:0)
我对你的要求不太清楚。无论如何试一试。
掌握了MySQL的基础知识后,请执行下一步并采用聚合函数。 Group BY
适用于检索有关一组数据的信息。如果您只有一种类型的产品,那么GROUP BY
就不会那么有用了。
GROUP BY
只有在你有许多类似的东西时才会闪耀。例如,如果您有多个相同类型的合作伙伴,并且想要查找一些统计信息,例如最小,最大或其他顶级信息,则可以使用GROUP BY
。
以下是更新的解决方案:
SELECT A.`event_id` AS 'Event(ID)', B.`partner_names` AS 'Partners' FROM `event` A
JOIN
SELECT (SELECT GROUP_CONCAT( P.`partner_name`) AS 'partner_names'
FROM (SELECT `partner_name` FROM information_schema.columns
WHERE table_name='partnerprofile') as P) FROM `partnerprofile` B
GROUP BY A.`partnerid`
此处假设partner_name
是partnerprofile
表中的名称字段。
预期的输出是:
+---------------+--------------------------------------------+
| Event(ID) | Partners |
+---------------+--------------------------------------------+
| event_001 | Partener1, Partener2, Partener4 |
| event_002 | Partener2, Partener3, Partener9 |
| event_003 | Partener15 |
| event_004 | Partener5, Partener7, Partener9 |
| _________ | _________, _________ |
| _________ | _________ |
| _________ | _________, _________ _________, _________ |
| _________ | _________, _________, |
+---------------+--------------------------------------------+
答案 1 :(得分:-1)
我认为INNER JOIN应该有效。类似的东西:
SELECT * FROM event INNER JOIN partner ON event.partnerID = partner.partnerID