-2

以下は、ゼロ行を返すクエリですが、実際にはそうすべきではありません。

SELECT distinct(usr.user_id)
FROM
    OCN.users AS usr,
    OCN.users_groups_subscribe AS usr_grp,
    OCN.tests_users AS test_usr
WHERE
    usr.user_id=usr_grp.subscribe_user_id AND
    usr.user_id=test_usr.test_user_user_id AND
    test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name
4

3 に答える 3

1

まず、適切な ANSI 結合構文を使用します。

SELECT distinct usr.user_id
FROM OCN.users AS usr
    inner join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    inner join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name

次に、結合を 1 つずつ (対応する列と一緒に) コメントしてみて、次のように行が取得されない理由を確認してください。

SELECT distinct usr.user_id
FROM OCN.users AS usr
    --inner join OCN.users_groups_subscribe AS usr_grp on usr_grp.subscribe_user_id = usr.user_id
    inner join OCN.tests_users AS test_usr on test_usr.test_user_user_id = usr.user_id
WHERE
    test_usr.test_user_test_id=116 AND
    (usr.user_first_name LIKE '%ajay%' OR usr.user_last_name LIKE '%ajay%')
ORDER BY usr.user_first_name, usr.user_last_name
于 2013-08-22T07:00:52.550 に答える