0

Expertz plz plz HELP :(

私は関係テーブルを持っています

r_id    usera   userb   active
13       5         1      0
16       1         2      0

他のユーザーが ID 番号 1 の友達であるかどうかを確認し、1 以外の ID を教えてください。

このクエリのように、条件 active=1 が満たされていないため、ans が空であることが期待されます

条件が true を返した場合、結果は 5,2 と予想されます

だから私はこのクエリを形成しました

注:user_id はセッションに応じて変化し続けます

$user_id = 1
SELECT CASE 
        WHEN `usera`=$user_id 
        THEN `userb` 
        ELSE `usera` END  
FROM  `relationship`  
WHERE `usera`=$user_id 
    OR `userb`=$user_id and `active`='1'

問題は、条件が満たされていない場合でも(つまり、アクティブ= 1)、ユーザーにクエリが空またはnullとして返されるようにすることです

ありがとう、

4

2 に答える 2

0

あなたの括弧は間違っています:

$user_id = 1
SELECT CASE 
        WHEN `usera`=$user_id 
        THEN `userb` 
        ELSE `usera` END  
FROM  `relationship`  
WHERE (`usera`=$user_id  OR `userb`=$user_id) and `active`='1'

アクティブなユーザーしか気にしていないようですが、条件式の 2 番目の部分だけに条件を付けていました。

于 2012-09-12T17:27:50.600 に答える
0

いくつかの括弧がありません:

SELECT CASE 
        WHEN `usera`=$user_id 
        THEN `userb` 
        ELSE `usera` END  
FROM  `relationship`  
WHERE `usera`=$user_id 
    OR (`userb`=$user_id and `active`='1')

またはこれはおそらくあなたが探しているものです:

SELECT CASE 
        WHEN `usera`=$user_id 
        THEN `userb` 
        ELSE `usera` END  
FROM  `relationship`  
WHERE (`usera`=$user_id OR `userb`=$user_id) 
  and `active`='1'
于 2012-09-12T17:22:18.663 に答える