0

tbl_cmp

usr_id | cmp_name | usr_fname |cmp_addr

tbl_usr

cmp_usr_id |cmp_id | cmp_usr_fname | cnt_status 

::一度に両方からデータを取得しようとしています::tbl_cmpからすべてのデータを取得しますが、cnt_status=1であるtbl_usrからフィールドのみを取得します

私はこれを試しました

SELECT *
FROM tbl_cmp
JOIN tbl_usr ON tbl_usr.cmp_id = tbl_cmp.usr_id
WHERE tbl_usr.cnt_status =1

ただし、最初のテーブルのすべてのレコードではなく、cnt_status=1のレコードのみが表示されます。

4

3 に答える 3

0

LEFTOUTERJOINを使用する

SELECT *
FROM tbl_users
Left outer JOIN tbl_cmp_user 
ON tbl_cmp_user.cmp_id = tbl_users.usr_id
and tbl_cmp_user.cnt_status =1

ここで左外部結合の例を参照してください

于 2012-08-10T13:43:37.547 に答える
0

これを試して

SELECT * FROM tbl_users LEFT JOIN tbl_cmp_user 
ON tbl_cmp_user.cmp_id = tbl_users.usr_id 
AND tbl_cmp_user.cnt_status =1
于 2012-08-10T13:44:21.933 に答える
0

テーブル間に結合条件がないため、本当に必要なのは相互結合です。

select c.*, u.*
from tbl_cmp c cross join
     (select *
      from tbl_users u
      where u.cnt_status = 1
     ) u

これは、サブクエリなしで次のように表すことができます。

select c.*, u.*
from tbl_cmp c cross join
     tbl_users u
where u.cnt_status = 1

tbl_usersの条件が非常に明確になるため、サブクエリバージョンの方が好きです。より複雑なクエリでは、WHERE句をFROM句のテーブルが表示される場所から完全に分離することができます。

于 2012-08-10T14:14:28.113 に答える