0

私はと呼ばれるテーブルを持っていますtbl_users

================================================================================
system_name | user_id | username | password | system_id | group_id | user_level
================================================================================
Demo        | 12345   | demo     | demo     | 99999     | 54321    | Admin
================================================================================
Demo        | 78794   | demo2    | demo2    | 99999     |          | Employee
================================================================================

そして2番目のテーブルとしてtbl_groups

=================================
system_id | group_id | group_name
=================================
99999     | 54321    | engine     
=================================

このクエリを使用しています:

SELECT username, user_level, system_name, tbl_users.system_id, tbl_users.user_id, tbl_users.group_id, group_name 
FROM tbl_users JOIN tbl_groups 
WHERE tbl_users.group_id = tbl_groups.group_id 
AND system_name = 'demo' 
AND tbl_users.system_id = '99999'

しかし、上記のクエリを使用すると の行を取得するだけDemo Userです。デモ 2 も必要ですが、実行できません。削除するtbl_users.group_id = tbl_groups.group_idと、両方の行を取得できますが、列にgroup_name印刷されたエンジンDemo2 User group_nameあり、現在グループがないため間違っています。ユーザーがグループに属している場合、またはユーザーがグループに属していない場合は group_name 列を空白にしたい場合に、すべてのユーザーとグループの名前を取得するクエリを実行するにはどうすればよいですか。

4

2 に答える 2

1

左側のテーブルのすべての行を返す場合は、JOINの代わりにLEFTJOINを使用します。また、基準を指定するときONの代わりにを使用する必要があります。WHEREJOIN

SELECT username, user_level, system_name, tbl_users.system_id, tbl_users.user_id, tbl_users.group_id, group_name
FROM tbl_users LEFT JOIN tbl_groups
ON tbl_users.group_id = tbl_groups.group_id
于 2012-10-23T17:29:58.020 に答える