2017-07-04 2 views
0

私は接続status =1を持っているの合計を取得したい2台sqlは条件2のテーブルと合計を選択しますか?

Table Connection 
---------------------------------------- 
| ID  | Member_ID | Connection| 
---------------------------------------- 
| 1  | 100  | 22  | 
---------------------------------------- 
| 2  | 101  | 15  | 
---------------------------------------- 
| 3  | 102  | 19  | 
---------------------------------------- 
| 4  | 103  | 21  | 

Table Member 
--------------------------- 
| ID   | Status  | 
--------------------------- 
| 100  | 0   | 
---------------------------- 
| 101  | 1   | 
---------------------------- 
| 102  | 1   | 
--------------------------- 
| 103  | 0   | 

を持っています。 例の結果は15+19 = 34である必要があります。

+1

これまでに何を試しましたか? – maSTAShuFu

+0

'(コネクションから接続を選択してください(どこからメンバーを選んでください=ステータス= 1)=接続.member_id)'。しかし、それはエラーを表示します: '一行の副問い合わせは複数の行を返す' –

+0

あなたの質問ではなく、コメントに投稿してください。 –

答えて

1

は、一般的なSQLを使用してこのクエリを記述する方法の例です:

SELECT 
    SUM(Connection.Connection) AS ConnectionSum 
FROM 
    Connection 
JOIN 
    Member ON Connection.Member_ID = Member.ID 
WHERE 
    Member.Status = 1; 
0

これはあなたのために正常に動作する必要があります。ここでは

select sum(Connection) as Total_connection 
     from Connection where ID in 
(select ID from member where status = 1); 
0

これは、MySQLとMariaDBデータベースへの参照である:

SELECT SUM(Connection) 
     FROM Connection 
     WHERE Member_ID = ALL (SELECT ID FROM Member WHERE Status = 1); 

または

SELECT SUM(Connection) 
     FROM Connection 
     WHERE Member_ID IN (SELECT ID FROM Member WHERE Status = 1); 
0

SELECT SUM(cn。 connection)sumresult FROM connection AS cn WHERE cn。 member_id
IN(SELECT em.id FROM member AS em here status = 1);

私はあなたがサブクエリが複数のIDと等しいオペレーターとして一つの値だけを取ることができます(複数のレコード)を返しますので、あなたがエラーを取得している

0

を必要として、それはあなたを助けることができると思います。 Equal演算子の代わりにIN演算子を使用すると、エラーが取り除かれます。

select sum(connection) from connection 
where connection.member_id IN (select id from member where status=1) 
関連する問題