0

我正在尝试运行查询以仅在客户用于会话的 IP 地址不同时才返回客户的名字和姓氏。

例如:

Customer 1 makes Order on Session IP address: 192.168.12.1
Customer 1 makes Order on Session IP address: 192.168.12.2

Customer 2 makes Order on Session IP address: 192.168.12.3
Customer 2 makes Order on Session IP address: 192.168.12.3

Return Customer where IP address is not same (Customer 1)

但是,我不知道如何指定 IP 地址的差异。

我目前拥有的是:

Select Cust_First, Cust_Last
FROM customer

LEFT join Session
On customer.cust_ID = session.Cust_ID

LEFT join Order
On session.Ses_ID = order.Session_ID

Where Ses_IPAddress # Is different for the same customer? 

我将用必要的字段详细说明表格:

Customer:
PK: Cust_ID
row: Cust_First
row: Cust_Last

Session:
PK: Ses_ID
FK: Cust_ID
Row: Ses_IPAddress

Order:
PK: Order_ID
FK Ses_ID
4

2 回答 2

1

没有看到源数据和输出就无法预测。可能是这个?

Select customer.Cust_First, customer.Cust_Last
FROM customer

LEFT join session
On customer.Cust_ID = session.Cust_ID

LEFT join order
On session.Ses_ID = order.Session_ID

GROUP BY customer.Cust_ID, session.Ses_IPAddress
HAVING COUNT(*) > 1
于 2012-11-12T13:01:15.530 回答
1

实际上,这项任务比您尝试完成它的方式要容易得多。只需从符合您逻辑的客户中选择这些客户即可。

SELECT Cust_First, Cust_Last
FROM Customer
WHERE Cust_ID IN (
    SELECT Cust_ID
    FROM Session
    JOIN Order On Session.Ses_ID = Order.Ses_ID
    GROUP BY Cust_ID, Session.Ses_IPAddress 
    HAVING COUNT(1) > 1
)
于 2012-11-12T13:04:07.653 回答