嗨,我是mysql和phpmyadmin的新手,所以我基本上只是从示例查询中学习,但是尝试构造自己的简单查询时遇到了一些麻烦。
我想搜索两个日期之间创建的所有用户的phpmyadmin数据库,这些用户属于在组名称中不包含“ xyz”的组。我要从中提取两个表:SITE_USER
和SITE_TargetGroup
。
在SITE_USER
相关的列是name
,surname
,primarygroupID
(用户的组ID)和createdAT
。在SITE_TargetGroup
相关列中是parentID
(组的ID)和name
。此处的primarygroupID
和parentID
自然是相同的数字(10),因为我要搜索属于相同类型的组但在组名中不包含“ xyz”的用户。抱歉,这令人困惑。
到目前为止,我已经提出了以下查询:
SELECT u.ID, u.name, u.surname, u.email, tg.name AS group, u.createdAT AS date
FROM SITE_User u
inner join SITE_TargetGroup tg
on tg.userID = u.ID
WHERE u.primaryGroupID <> 10
and u.createdAt BETWEEN ‘2014-04-09’ AND ‘2014-05-09
and tg.name NOT LIKE ‘xyz’
GROUP BY dayofmonth(u.createdAT), month(u.createdAT)
ORDER BY dayofmonth(u.createdAT), month(u.createdAT)
但是它返回错误:#1064-第1行的'group(tg.name)FROM SITE_User u内部联接SITE_TargetGroup tg on tg.userID = u'附近的SQL语法中有错误
谁能建议如何改进/构造查询来做到这一点?提前致谢。
使用DDL联接表,您需要在表之间有一个公共密钥。
SITE_TargetGroup.parentID = SITE_USER.primarygroupID
因此,您的查询应如下所示
SELECT
u.ID,
u.name,
u.surname,
u.email,
tg.name,
date(u.createdAt)
FROM SITE_User u
inner join SITE_TargetGroup tg
on tg.parentID = u.primarygroupID
WHERE u.primaryGroupID <> 10
and u.createdAt BETWEEN '2014-04-09' AND '2014-05-09'
and tg.name NOT LIKE 'xyz'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句