0

2 つのテーブルがあり[basic][info]両方に主キーがありますemail_id。テーブルから情報を取得したいのですbasicが、where句には両方のテーブルから検索条件が必要です

例:

SELECT DISTINCT 
    basic.f_name, 
    basic.l_name 
FROM 
    basic 
CROSS JOIN 
    info 
WHERE 
    (basic.email_id = basic.email_id) 
    AND (basic.caste LIKE '%' + @caste + '%') 
    AND (info.diet =  @diet )

(このクエリは、gridview の ASP で記述されていますが、機能していません)

4

3 に答える 3

6
SELECT basic.f_name, basic.l_name 
FROM basic INNER JOIN info ON basic.email_id = info.email_id 
WHERE (basic.caste LIKE '%' + @caste + '%') AND (info.diet = @diet )
于 2013-03-29T16:13:14.757 に答える
1

内部結合を行う場合、実際には where 句を使用してクロス結合を使用しています。内部結合では、すべてのデータが結合され (デカルト積)、where 句でフィルター処理されます。したがって、内部結合を使用すると、コードがよりクリーンになると思います。

SELECT DISTINCT basic.f_name, basic.l_name 
FROM basic 
CROSS JOIN info 
WHERE (basic.email_id = basic.email_id) 

と同等です

SELECT basic.f_name, basic.l_name 
FROM basic INNER JOIN info ON basic.email_id = info.email_id 

これで問題は解決すると思います。

于 2013-03-29T16:21:50.897 に答える
0

内部結合を使用する

SELECT DISTINCT 
    basic.f_name, 
    basic.l_name 
FROM 
    basic as basic
INNER JOIN 
    info as info 
    ON basic.email_id = info.email_id
WHERE 
    (basic.caste LIKE '%' + @caste + '%') 
    AND (info.diet =  @diet )
于 2013-03-29T16:24:14.320 に答える