2016-12-23 3 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

Смежные вопросы