1

列でpayment構成される、というテーブルがあります- 、、、、、、、、、、、、、、。_ _ 私がやりたいのは、現在設定されているuserIDが、選択した行の列u1、u2 ...などのいずれかに格納されているIDと等しい場合に、有料列の1つの値を格納することです。bill IDgroup IDu1u1paidu2u2paidu3u3paidu4u4paidu5u5paid

たとえば、現在のユーザーIDがに格納されているIDと等しい場合、の値をPHP変数u3に格納したいと思います。u3paidこれを実現するための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のようなものに最も近いものです。

2番目の編集(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:上記のコマンドは機能します。変数名の1つを台無しにしました: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 に答える