これは純粋に効率的な質問です。IN句で使用するために3つの別個の列を1つにまとめる
id | name | email
-------+----------------+---------------------
12 | Bob | [email protected]
15 | Dave | [email protected]
これを実行することが可能です:ユーザーIDがエンティティ内でのそれらの位置
id | supervisor | manager | worker
-------+----------------+--------------+---------------
1 | 12 | 15 | 32
2 | 12 | 42 | 22
に基づいて保存され、ユーザー情報とのいずれかがされている
一つ:私は2つのテーブルを持っています3の代わりにIN
句を1つだけ使用しますか?
SELECT `name`, `email`
FROM `tbl_users`
WHERE `id` IN
(SELECT `supervisor` FROM `tbl_warehouse` WHERE `id` = 'WAREHOUSEID')
OR `id` IN
(SELECT `manager` FROM `tbl_warehouse` WHERE `id` = 'WAREHOUSEID')
OR `id` IN
(SELECT `worker` FROM `tbl_warehouse` WHERE `id` = 'WAREHOUSEID')
私はあなたがEXISTS
を使用して、サブクエリ内IN
を使用することができますIN
句が働くように、1列にsupervisor
、manager
、worker
列を結合しようとしているいくつかのことを試みたが、成功
' 'WAREHOUSEID''はあなたより良い、パラメータの場合この '@ warehouseid'のように、文字列と数字を混在させているように見えます。 –
例として、これに' WAREHOUSEID'を投げただけです。それは私が用意したステートメントで設定したパラメータです – eeetee
私は知っている、次回のヒントです。また、あなたの質問では、2つのテーブルを表示するが、もちろん、あなたが推測することができるクエリのように見える名前を言うことはありません。しかし、あなたが最初から明確にした方が良いです。 –