2013-05-04 70 views
0

我正在嘗試製作一個用戶活動供稿,該供稿僅顯示作爲登錄用戶的朋友的用戶活動。SQL SELECT中的IF..ELSE語句?

字段user1和user2是好友請求發件人和好友請求接收者。問題是,登錄的用戶可能在任何一個領域,所以我想知道如何能爲這個特定的問題做一個if..else聲明。

基本上我想:

IF user2 is $log_username SELECT user1 FROM friends... 
ELSE 
SELECT user2 FROM friends. 

的粗體代碼(子查詢)是一個我指的是特異性。

$sql = " 
SELECT * FROM status 
WHERE author in (
     SELECT user2 FROM friends 
     WHERE user1='$log_username' 
      AND accepted='1' 
      OR user2='$log_username' 
      AND accepted='1' 
    ) AND type='a' 
"; 

任何幫助,非常感謝。

回答

0

IF在SQL語句中是CASE。像這樣的東西(不知道這是否給你你想要的東西,但只是爲了展示這個概念)。

$sql = " 
SELECT * FROM status 
WHERE author in (
     SELECT CASE WHEN user2 = '$log_username' THEN user1 ELSE user2 
       END 
     FROM friends 
     WHERE user1='$log_username' 
      AND accepted='1' 
      OR user2='$log_username' 
      AND accepted='1' 
    ) AND type='a' 
"; 
+0

它給了我這些錯誤:警告:mysqli_fetch_array()期望參數1是mysqli_result,布爾給定的參數1是mysqli_result,布爾在C:... \ home.php中給出在線37 在第38行的C:... \ home.php中。這兩行是最後兩行:$ query = mysqli_query($ larue,$ sql); $ statusnumrows = mysqli_num_rows($ query); while($ row = mysqli_fetch_array($ query,MYSQLI_ASSOC)){Thanks! – sienna 2013-05-05 00:03:42

+0

改變了一些事情:'$ log_username'必須用單引號括起來,就像'WHERE'子句中一樣。但是,我希望你能給出一般的概念,以便你自己解決。 – hol 2013-05-05 07:09:22

+0

謝謝謝謝,非常感謝你!我無法表達我對你的幫助是多麼的感激。只是,非常感謝!(: – sienna 2013-05-06 20:35:11

1

使用UNION:

$sql = "SELECT * FROM status WHERE author IN 
    (SELECT user1 FROM friends WHERE user1='$log_username' AND accepted='1' 
    UNION 
    SELECT user2 FROM friends WHERE user2='$log_username' AND accepted='1')"; 
+0

CASE子句是否適用於此?我正在做一些研究,並不斷彈出。如果是這樣,你知道嗎?因爲聯盟給我錯誤。 – sienna 2013-05-04 19:08:18

+0

我編輯並測試了代碼。 – Lazarus 2013-05-06 15:52:10