我有一张类似的表:
memberID | clubIDs | clubRegistrationDates ...
--------------------------------------------------------------------
2 3,4,10,2 2010,2011,2015,2014 ...
3 2,1,5,6 2015,2000,2005,2010 ...
4 3,2 2014,2014 ...
一行的含义是,例如:成员 2 在 2010 中注册到 3 俱乐部,注册到俱乐部 4 2011 等等...... 因此,我想要获得的查询是任何成员 2 2014 ,所以此查询应该让我成员 2 和 4 。我已经有一个sql但它没有连接到year参数:
SELECT clubID, clubName,
(SELECT count(*) FROM members WHERE FIND_IN_SET('2',clubIDs) AND status='1' AND memberTypeID='2') AS activeNumber,
(SELECT count(*) FROM members WHERE FIND_IN_SET('2',clubIDs) AND status='0' AND memberTypeID='2') AS inactiveNumber
FROM clubs;
所以我需要从 clubIDs 专栏获取俱乐部2的索引,并将其用于 clubRegistrationDates 专栏。感谢任何帮助,提前谢谢。
答案 0 :(得分:2)
永远不要在一列中存储多个值。这只会让你遇到像你这样的问题。更好的桌面设计将是
members table
-------------
id
name
...
clubs table
-----------
id
name
...
club_members table
------------------
club_id
member_id
registration_year
它被称为 m到n关系。然后从id=2
2014
获得select m.id, m.name
from members m
join club_members cm on cm.member_id = m.id
where cm.club_id = 2
and cm.registration_year = 2014
俱乐部的所有成员
name
如果您只有俱乐部id
而不是select m.id, m.name
from members m
join club_members cm on cm.member_id = m.id
join clubs c on cm.club_id = c.id
where c.name = 'Cool Club'
and cm.registration_year = 2014
,那么请使用
{{1}}