SQL内部联接语句的帮助

SQL内部联接语句的帮助,sql,pervasive,Sql,Pervasive,我有两个表,一个显示客户地址,另一个显示所有订单数据。我想使用联接查询这两个表,这样我就可以得到一个结果集,显示去年没有订购的客户的所有电子邮件地址 到目前为止,我有这个,但我的内部连接不起作用,如果您可以帮助的话: SELECT SHH.CUST_NO,ADR.EMAIL FROM SALES_HISTORY_HEADER SHH,ADDRESS ADR INNER JOIN ADR ON SHH.CUST_NO = ADR.CUST_NO GROUP BY SHH.CUST_

我有两个表,一个显示客户地址,另一个显示所有订单数据。我想使用联接查询这两个表,这样我就可以得到一个结果集,显示去年没有订购的客户的所有电子邮件地址

到目前为止,我有这个,但我的内部连接不起作用,如果您可以帮助的话:

SELECT SHH.CUST_NO,ADR.EMAIL  

FROM SALES_HISTORY_HEADER SHH,ADDRESS ADR

INNER JOIN ADR ON
SHH.CUST_NO = ADR.CUST_NO  


GROUP BY SHH.CUST_NO 
HAVING Max(SHH.INVOICE_DATE) < '20100728'
选择SHH.客户编号、ADR.EMAIL
从销售记录头SHH,地址ADR
内部连接
SHH.CUST\u编号=ADR.CUST\u编号
按SHH.CUST_编号分组
最大值(SHH发票日期)<'20100728'

您正在混合联接样式。如果要使用显式联接(而且应该),则需要在联接上指定第二个表,而不是在FROM子句中列出所有表

SELECT SHH.CUST_NO,ADR.EMAIL  
    FROM SALES_HISTORY_HEADER SHH
        INNER JOIN ADDRESS ADR 
            ON SHH.CUST_NO = ADR.CUST_NO  
    GROUP BY SHH.CUST_NO, ADR.EMAIL
    HAVING Max(SHH.INVOICE_DATE) < '20100728'
选择SHH.客户编号、ADR.EMAIL
来自销售\历史\标题嘘
内部连接地址
关于SHH.CUST\u编号=ADR.CUST\u编号
按SHH.CUST_编号分组,ADR.EMAIL
最大值(SHH发票日期)<'20100728'

您正在混合联接样式。如果要使用显式联接(而且应该),则需要在联接上指定第二个表,而不是在FROM子句中列出所有表

SELECT SHH.CUST_NO,ADR.EMAIL  
    FROM SALES_HISTORY_HEADER SHH
        INNER JOIN ADDRESS ADR 
            ON SHH.CUST_NO = ADR.CUST_NO  
    GROUP BY SHH.CUST_NO, ADR.EMAIL
    HAVING Max(SHH.INVOICE_DATE) < '20100728'
选择SHH.客户编号、ADR.EMAIL
来自销售\历史\标题嘘
内部连接地址
关于SHH.CUST\u编号=ADR.CUST\u编号
按SHH.CUST_编号分组,ADR.EMAIL
最大值(SHH发票日期)<'20100728'

“我的内部联接不工作”不是完整描述,也是什么dbms?“我的内部联接不工作”不是完整描述,也是什么dbms?嗨,乔,谢谢你的帮助,但我收到一个错误,说明“列无效:必须是按列分组:选择列表中的电子邮件”@seb然后您需要通过以下方式将ADR.EMAIL添加到您的组中:statement@seb:将
ADR.EMAIL
添加到
groupby
子句中。@bluefeet是的,谢谢,你是对的,我没有注意到最后一个问题,你们认为这是编写此声明最有效的方法吗?它已经运行了几分钟了,有没有更快的方法提取这些数据?谢谢你好,乔,谢谢你的帮助,但是我收到一个错误,提示“COLUMN INVALID:必须是一个分组,按COLUMN:选择列表中的电子邮件”@seb然后你需要按添加ADR.EMAIL到你的分组中statement@seb:将
ADR.EMAIL
添加到
groupby
条款中。@bluefeet是的,谢谢,你说得对,我没有注意到最后一个问题,你们认为这是写这个声明最有效的方式吗?它已经运行了几分钟了,有没有更快的方法提取这些数据?谢谢