1

我有一个名为 的表payment,它由列 - bill ID, group ID, u1, u1paid, u2, u2paid, u3, u3paid, u4, u4paid, u5,组成u5paid如果我当前设置的 userID 等于存储在我选择的行中的列 u1、u2...等之一中的 ID,我想要做的是存储付费列之一的值。

例如,如果当前用户 ID等于存储在 中的 ID u3,我想将 的值存储u3paid在 PHP 变量中。实现此目的的 SQL 命令是什么?

尝试解决方案:

SELECT u1paid if u1 = SessionID or u2paid if u2 = SessionID or 
u3paid if u3 = SessionID or u4paid if u4 = SessionID or 
u5paid if u5 = SessionID FROM payment WHERE billID = BILLID;

我知道这不是正确的语法,但它是我能得到的最接近类似 SQL 的东西。

第二次编辑(基于twoleggedhorse的回答):

$payment = "SELECT CASE WHEN u1 = '".$_SESSION['ID']."' THEN u1paid WHEN u2 = 
'".$_SESSION['ID']."' THEN u2paid WHEN u3 = '".$_SESSION['ID']."' THEN u3paid 
 WHEN u4 = '".$_SESSION['ID']."' THEN u4paid 
 WHEN u5 = '".$_SESSION['ID']."' THEN u5paid END AS PAID 
 FROM payment WHERE trackbill = '".$row['BID']."';"

之后,我尝试通过 $payment['PAID'] 访问此语句中的值,但它仍然无法正常工作。我还在搞砸这件事吗?

Edit3:上面的命令有效,我只是弄乱了一个变量名:P

4

1 回答 1

1

尝试这样的事情:

SELECT  CASE WHEN u1 = SessionID THEN u1paid 
             WHEN u2 = SessionID THEN u2paid
             WHEN u3 = SessionID THEN u3paid
             WHEN u4 = SessionID THEN u4paid
             WHEN u5 = SessionID THEN u5paid
             ELSE 'No result found'
        END AS Paid
FROM    payment 
WHERE   billID = BILLID;
于 2013-03-06T17:01:05.297 回答