0

次のテーブルがあります。

ユーザー:

ID、ユーザー名、所有者

管理者

ID、ユーザー名、所有者

取引:

id,sender_id,sender_type

各ユーザーは管理者が所有できます 各管理者は別の管理者が所有できます

私はいくつかのアクセス レベルで作業しようとしています。PHP で生成されたリストの送信者部分の所有者を持つクエリ行を取得したいと考えています。

このためには、データベース構造を変更することなく、所有しているデータに基づいて送信者の所有者を取得する必要があります。

SELECT 
    * ,
    IF (t.sender_type='admin',
        ( SELECT owner AS qowner 
          FROM admins
          WHERE id=t.sender_id),
          ( SELECT owner AS qowner FROM users 
            WHERE id=t.sender_id)
    ) AS qowner 
FROM `transactions` t 
WHERE qowner IN ('admin22','admin33','admin44','admin66')

このエラーが発生し続けます:「where句」の列「qowner」が不明です

私は今これで立ち往生しています。私は来るすべての助けに感謝します。ありがとうございました!

4

2 に答える 2

0
SELECT * ,
IF (t.sender_type='admin',(SELECT owner FROM admins WHERE id=t.sender_id),(SELECT owner FROM users WHERE id=t.sender_id)) AS qowner 
FROM transactions t 
WHERE qowner IN ('admin22','admin33','admin44','admin66')

(未テスト)

于 2013-10-04T15:05:48.213 に答える