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 に答える