2016-04-09 17 views
0

私は2つのテーブルを持っていますクライアントトランザクションと私はすべてのクライアントが合計で選択すべき方法でこれらのテーブルからクエリを取る必要がありますその取引の
私の問題は、これらの2つのテーブルからクエリを実行して条件を設定するときです。どのトランザクションがトランザクションテーブルにレコードを持つクライアントだけを表示するクライアントIDを持っているべきですが、トランザクションを持たなくてもすべてのクライアントを表示したい(トランザクションの合計ではなく、ゼロを表示できます)。
私はトランザクションテーブルに属する条件のため、クエリはクエリ要件を満たしていないクライアントテーブルの人を選択しませんが、すべてのクライアントとそのトランザクションの合計を選択するか、トランザクションはありません。2つのテーブルから1つのテーブルにのみ有効な条件を選択する

これは、テーブルの短いビュー(私は、クエリで使用される列のみ)

ID Name Company Phone //clients table 

ID Client_id Incoming ... //transaction table 

であるあなたは左結合を使用することができ、事前にありがとう、私の悪い英語のため申し訳ありません

+0

質問を編集し、使用しているクエリを追加してください。 –

+0

これは私のクエリ 'SELECT clients.id、clients.name、clients.company、clients.phone、sum(incoming) - クライアントからの総計(発信)、transactionss.id = clients.id' – AliDK

答えて

1

にそれを変更する必要がありますまた、あなたはまた、相関サブクエリでこれを行うことができます。

SELECT c.*, 
     (select sum(t.incoming) - sum(t.outgoing) 
     from transactions t 
     where t.client_id = c.id 
     ) as total 
from clients c; 

状況によっては、パフォーマンスが向上する可能性があります。

+0

これはまさに私がやりたいことです – AliDK

1
SELECT c.Name, count(t.ID) 
FROM clients c 
left join transactions t on c.CustomerID = t.Client_id 
group by t.client_id 
1

以下のようになります。 SELECT * FROM clients LEFT JOINトランザクションON client.id = transaction.Client_id

Y OUは、トランザクションから空の行がnullに設定されるすべてのクライアントになるだろう、あなたは0

+0

このクエリでsum()メソッドを追加して、着信列の合計を取得できますか? – AliDK

関連する問題