2014-12-16 3 views
0

Моего кода наклеено здесь для Sql столов и информации: http://pastebin.com/GsKp4z30Sql заявления, пытаясь понять, присоединяться к заявлениям

, что я пытаюсь сделать, это: SuperClean хотел бы предложить специальный для своих клиентов, которые используют купоны. Получить имена и адреса для клиентов, использующих купоны на любом порядке с 1 сентября 2014 года по 24 декабря 2014 г.

Но я получаю 40+ строк информации, и я не могу показаться, чтобы получить присоединиться заявление для правильной работы.

Я пытался это, но я продолжаю получать недопустимый идентификатор.

SELECT 
    CUSTOMER.CUSTOMER_NAME, CUSTOMER_CUSTOMER_NAME, CUSTOMER.CUSTOMER_ADDRESS 
FROM CUSTOMER 
INNER JOIN 
    CUSTOMER ON CUSTOMER.CUSTOMER_ID = CUSTOMER_INVOICE.CUSTOMER_ID; 
+0

«То, что я пытаюсь сделать, - это заставить кого-то выполнять домашнюю работу» - какие заявления вы пытались сделать до сих пор? – sjagr

+0

Я пытался это сделать, но я продолжаю получать недопустимый идентификатор. ВЫБОР CUSTOMER.CUSTOMER_NAME, CUSTOMER_CUSTOMER_NAME, CUSTOMER.CUSTOMER_ADDRESS ОТ КЛИЕНТА INNER JOIN КЛИЕНТ ПО CUSTOMER.CUSTOMER_ID = CUSTOMER_INVOICE.CUSTOMER_ID; – user2989486

+0

поэтому после внутреннего соединения должен быть таблица, которую я еще не добавил? – user2989486

ответ

1

У вас есть хорошая попытка.

Ваша первая проблема возникает из INNER JOIN CUSTOMER - вы уже выбираете из CUSTOMER, так зачем же присоединяться к нему с CUSTOMER? Вы должны присоединяться с CUSTOMER_INVOICE вместо:

SELECT 
    CUSTOMER.CUSTOMER_NAME, CUSTOMER.CUSTOMER_ADDRESS 
FROM CUSTOMER 
INNER JOIN 
    CUSTOMER_INVOICE ON CUSTOMER.CUSTOMER_ID = CUSTOMER_INVOICE.CUSTOMER_ID; 

Я также установил другую проблему с вашим SELECT, прежде чем он был таков:

SELECT 
    CUSTOMER.CUSTOMER_NAME, CUSTOMER_CUSTOMER_NAME, CUSTOMER.CUSTOMER_ADDRESS 

Еще нет столбца или псевдоним определяется как CUSTOMER_CUSTOMER_NAME. Поэтому он выдаст вам недопустимую ошибку идентификатора.

Это будет возвращать все клиент с соответствующими счетами клиентов - теперь нам нужно фильтровать вниз счета-фактуры с купонами, установленных в YES использования WHERE:

SELECT 
    CUSTOMER.CUSTOMER_NAME, CUSTOMER.CUSTOMER_ADDRESS 
FROM CUSTOMER 
INNER JOIN 
    CUSTOMER_INVOICE ON CUSTOMER.CUSTOMER_ID = CUSTOMER_INVOICE.CUSTOMER_ID 
WHERE 
    CUSTOMER_INVOICE.COUPON_YESNO = 'YES'; 

и фильтровать результат, высаживать дальше для работы с конкретным диапазоном дат от вашего вопроса. Я позволю вам понять эту часть, если у вас возникли трудности с пониманием WHERE.

+0

Да, я только что изменил его на CUSTOMER.CUSTOMER_NAME, была опечатка. OK Мне все еще нужно небольшое объяснение синтаксиса соединения, мы использовали одну таблицу, которую мы раньше не использовали, и эта таблица должна идти за внутренним соединением? – user2989486

+0

@ user2989486 Типичный синтаксис: 'SELECT column_name (s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name'. Имя таблицы, которое следует за «INNER JOIN», указывает таблицу, которая должна быть присоединена к таблице после 'FROM', а условие после предложения' ON' указывает, как сопоставить строки между левой таблицей ('table1') и правая таблица ('table2'). Обычно это делается, если одна таблица хранит внешний ключ для другой объединенной таблицы. После того, как вы получите базовый набор результатов из всех объединений, вы используете 'WHERE' для фильтрации набора данных на основе параметров вашей проблемы – sjagr

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