0

別のテーブルの複数の結果に基づいて、あるテーブルから結果を返そうとしています。セットアップは次のとおりです。

Table A: "accounts"

id | fname | other_id

1  | test  | 500
2  | test2 | 505
3  | test3 | 500
4  | test4 | 540
5  | test5 | 500

Table B: "transactions"

id | account_id | 

1  | 1          
2  | 4
3  | 2
4  | 1
5  | 3
6  | 2

私が達成しようとしているのは、account_id =テーブルAのID WHERE other_id =特定の値であるトランザクションからすべてのIDを返すことです。

手動で書き出すには、次のようになります。

たとえば、other_id = 500 の場合。

1) other_id = 500 のアカウントからレコードを取得する (この場合は 1、3、5 の複数の結果になります)

2) account_id = 1 OR account_id = 3 OR account_id = 5 のトランザクションからレコードを取得する

いくつかの異なるサブセレクトを試しましたが、探しているものを思いつくことができないようです.

もちろん、PHP を使用してこれをループに分割することもできますが、効率のために単一のクエリを使用したいと思います。

4

3 に答える 3

1
select t.id 
from accounts as a 
inner join transactions as t on a.id = t.account_id
where a.other_id=500
于 2013-10-04T15:04:23.330 に答える
1

単純な結合だけで、副選択は必要ありません。

select * from accounts a, transactions t where t.account_id=a.id and other_id=500
于 2013-10-04T15:04:36.083 に答える
0

私があなたを正しく理解しているなら、あなたはこれが欲しい.

SELECT b.id
FROM accounts AS a
LEFT JOIN transactions AS b ON b.account_id = a.id
WHERE other_id = 500
于 2013-10-04T15:08:53.923 に答える