您好我是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 - 您的SQL语法中的'SQL(sg.name)FROM SITE_User u inner join SITE_TargetGroup tg on tg.userID = u'第1行附近有错误
有人可以建议如何改进/构建查询来执行此操作吗?提前致谢。
答案 0 :(得分:0)
确定使用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'