2016-12-23 32 views
0

我一直在学习如何使用嵌套连接,但似乎无法让它们适用于当前数据库。如何使用嵌套连接编写select语句

我已经创建了这些表: enter image description here

我想先了解有多少用户已经由至少一个使用(他们有他们的帐户若干分钟),创建自己的帐户在2016年,和使用iPhone在2013年 我已经试过这是产生错误:

SELECT COUNT(user_id) FROM USER 
WHERE usage_count > 0 
AND account_created <= ‘2016-12-31’ 
AND account_created >= ‘2016-01-01’ 
INNER JOIN PRODUCT 
WHERE product = 'iPhone'; 
+0

'INNER JOIN PRODUCT' ------你缺少的列加入'ON' – WillardSolutions

+0

'JOIN'条款面前'WHERE'去。 – Barmar

+0

你的表中没有'usage_count'列,那么'usage_count> 0'应该指什么? – Barmar

回答

1

您所查询的错误出这是意料之中的,因为你有两个WHERE条款和USER是关键的字,不应该被用来作为标识。我已经使用backtique逃脱了他们,更好地使用非键/保留字作为您的列名。您的查询应该像

SELECT COUNT(u.user_id) FROM `USER` u 
INNER JOIN USAGE us on us.user_id = u.user_id 
JOIN PRODUCT p ON us.product_id = p.product_id 
WHERE p.product = 'iPhone' 
AND u.usage_count > 0 
AND u.account_created <= '2016-12-31' 
AND u.account_created >= '2016-01-01' 
+0

'USER'是一个关键字,但它不是保留的,所以不需要转义。 – Barmar

+0

您需要加入'usage'表,因为这是'user'和'product'的链接。 – Barmar

+0

你在日期周围有错误的引号类型(因为你从问题中复制了它们)。 – Barmar