2016-11-18 84 views
-3

之间,我有4个表:SQL加入不同的表

  • 客户
  • 账户
  • 付款
  • 转会

我想这使得无论是传输或客户付款。付款表与客户表相关联,转账表与客户表相关联,而客户表与客户表相关联。

我怎么能写一个返回做出任何支付或转移客户查询?

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 

谢谢

+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) 

对于病症使用的参数基础上表名在这里,我给T1,T2,T3,T4你可以使用任何表中的条件。

0

我想这使得无论是转账或付款的客户

在SQL中,UNION类似于逻辑OR

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