2016-11-18 11 views
-3

間の結合します支払い。支払いテーブルは顧客テーブルにリンクされ、転送テーブルは勘定テーブルにリンクされ、勘定テーブルは顧客テーブルにリンクされます。SQLは、私は4つのテーブルを持っている別のテーブル

支払いまたは送金を行った顧客を返すクエリを作成するにはどうすればよいですか?

SELECT customer.registration_os, Count(DISTINCT customer.customer_id) AS registrations 
FROM customer 
Inner Join account On customer.customer_id = account.customer_id 
INNER JOIN payment ON customer.customer_id = payment.customer_id 
LEFT JOIN transfer ON customer.customer_id= transfer.from_account 
WHERE customer.ts_created BETWEEN ? AND ? 
    AND customer.registration_source = ? 
GROUP BY customer.registration_os 

は私がT1、T2、T3、あなたが条件で任意のテーブルを使用することができ、T4を与えている、ここでのテーブル名に基づいて条件用パラメータについては

+0

は、いくつかのサンプル・テーブル・データと予想される結果を追加します。 (フォーマットされたテキストも同様です)また、あなたの現在のクエリの試みを見せてください! – jarlh

+0

直接質問する前に何か試してみるべきです.... – Rupsingh

+0

[質問する方法](http://stackoverflow.com/help/how-to-ask) – Viki888

答えて

0
SELECT * FROM Customers as t1 
LEFT JOIN Accounts as t2 ON t2.customer_id = t1.id // (Account table is linked to Customers) 
LEFT JOIN Payments as t3 ON t3.customer_id = t3.id // (Payments table is linked to Customers) 
LEFT JOIN Transfers as t4 ON t4.account_id = t2.id // (Transfers table is linked to Accounts) 
WHERE (condition) 

ありがとうございます。

0

私はUNIONOR論理的に類似しており、SQLのいずれかで転送または支払い

をした顧客を取得したい:

SELECT customer_id 
    FROM customer NATURAL JOIN account 
    UNION 
    SELECT customer_id 
    FROM customer NATURAL JOIN (SELECT from_account AS customer_id 
            FROM transfer) t 
関連する問題