0

MySQL のサブクエリ機能に非常に戸惑っています。

私の例では、3 つのテーブルを使用します。

adr にはアドレスが含まれます adr_acc にはアドレスにアクセスできるグループまたはユーザーが含まれます usr_grp にはグループに属するユーザーが含まれます

select * from adr where 
adr.adr_id in
  (select ac1.adr_id from adr_acc as ac1 where
    (
      (ac1.acc_type = 'U' and ac1.acc_id = '".$s['user']."') or
      (ac1.acc_type = 'G' and ac1.acc_id in
        (select ug1.grp_id from usr_grp as ug1 where ug1.usr_id = '".$s['user']."')
      )
    )
  )

エラーが発生します:

1054 - 「IN/ALL/ANY サブクエリ」の不明な列「adr.adr_id」

私は何が欠けていますか?

4

1 に答える 1

0

ARGGGGGGGGGGGGGG - 私はばかです、そのような信じられないほどばかげたことを尋ねて申し訳ありません。

SELECT * 
FROM adr 
WHERE adr.id IN(
  SELECT ac1.adr_id
  FROM adr_acc AS ac1 
  WHERE (
      ( ac1.acc_type = 'U' AND ac1.acc_id = '".$s[' USER ']."' ) 
      OR (ac1.acc_type = 'G' AND ac1.acc_id IN (SELECT ug1.grp_id FROM usr_grp AS ug1 WHERE ug1.usr_id = '".$s[' USER ']."')
      )
    ))

これは正しいクエリです。

于 2010-10-12T15:20:42.610 に答える