2013-03-06 48 views
0

SQL选择值我有一个表叫payment,其中包括列 - bill IDgroup IDu1u1paidu2u2paidu3u3paidu4u4paidu5u5paid。如果我当前设置的用户ID等于在我选择的行中存储在其中一列u1,u2 ...等中的ID,我想要做的是存储其中一个付费列的值。从列在另一列等于给定值

实施例,如果当前用户ID等于存储在u3的ID,我想的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的。

第二个Edit(上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']."';" 

在那之后,我试图从$支付[“付费”]这条语句访问该值,但它仍然是不加工。我还在搞这件事吗?

EDIT3:上述命令的作品,我只是搞砸变量名中的一个:P

+0

什么是你的企图? – Trent 2013-03-06 16:44:59

+0

我试过用case语句试验,但我根本无法拿出任何具体的东西。这是一个更大的任务的一小部分,除了SQL中简单的Select和Update语句之外,我们没有涉及任何内容,所以我有点失落。 – 2013-03-06 16:46:33

+1

好吧,这听起来像一个非常简单的SELECT语句。请至少尝试编辑您的问题。我的意思是基本上你可以通过谈论它来解决这个问题......你需要从支付表中选择u3paid,其中u3等于...不要混淆,只需输入你想要的简单英语,会看到查询... – Trent 2013-03-06 16:49:01

回答

0

尝试是这样的:

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; 
+0

在语法错误之后完美工作,谢谢! – 2013-03-06 17:19:44

+0

@NobleSixTaniguchi很高兴我能帮忙:) – twoleggedhorse 2013-03-07 08:37:28

相关问题