0

以下のような2つのテーブルがあります。

テーブル val1

e_id  name   val  

1     A1     Abc         
2     A2     Abd        
3     A3     AbE        
4     A4     AEd   
5     A5     AEd   
6     A6     Bdc   

テーブル val2

e_id   e_desc   t_id   

1       desc1    1
2       desc1    1
1       desc1    2
3       desc1    1
5       desc1    1
2       desc1    2
4       desc1    2
5       desc1    2
2       desc1    3
4       desc1    1
6       desc1    1
3       desc1    2
6       desc1    2
3       desc1    2
5       desc1    3

テーブル Val2 t_id = 1 の場合、テーブル Val2 の e_id を持つ e_id マップによって、テーブル Val1 から値のみをフェッチしたい

このクエリを使用していますが、すべてのデータを取得しています。どうすれば問題を解決できますか。以下に使用したSQLコードを次に示します

SELECT 
    a.*,
    b.e_desc 
FROM 
    val1 AS a, val2 AS b 
WHERE 
    b.e_id = a.e_id 
AND EXISTS (SELECT 
                c.e_id 
            FROM val2 AS c 
            WHERE 
                c.e_id = a.e_id 
            AND c.t_id='1' 
           ) 
4

2 に答える 2

2

ちょうどどうですか

SELECT  a.*,
        b.e_desc 
FROM    val1 AS a,
        val2 AS b 
WHERE   b.e_id = a.e_id 
AND     b.t_id='1' 

あるいは

SELECT  a.*,
        b.e_desc 
FROM    val1 AS a INNER JOIN
        val2 AS b ON b.e_id = a.e_id 
WHERE   b.t_id='1'
于 2012-09-05T04:55:49.940 に答える
1

JOIN両方のテーブルに 2 つの条件を指定することで解決できます。これを試して、

SELECT  a.*, b.e_desc
FROM    tableA a
        INNER JOIN tableB b 
           ON a.e_id = b.e_id  AND 
              a.e_id = b.t_id
WHERE b.t_id = 1
于 2012-09-05T04:55:35.817 に答える