我的代码粘贴在这里,用于Sql表和信息:http://pastebin.com/GsKp4z30
我要做的是: SuperClean希望为使用优惠券的客户提供特价。检索名称和 2014年9月1日至12月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 :(得分: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
。