2013-03-06 2 views
0

У меня есть таблица с именем payment, который состоит из колонн - bill ID, group ID, u1, u1paid, u2, u2paid, u3, u3paid, u4, u4paid, u5, u5paid. Я хочу сохранить значение одного из платных столбцов , если мой текущий идентификатор пользователя равен идентификатору, хранящемуся в одном из столбцов u1, u2 ... и т. Д. В строке, которую я выбрал.SQL выберите значение из столбца, когда другой столбец равен заданному значению

Например, если текущий идентификатор пользователя равно 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']."';" 

После этого я пытаюсь получить доступ к значению данного заявления $ оплаты [ «ЗАПЛАЧЕННОЙ»], но до сих пор не за работой. Разве я все еще что-то шучу в этом?

Edit3: Вышеприведенная команда работает, я просто перепутал одну из имен переменных: P

+0

что ваша попытка? – Trent

+0

Я пробовал экспериментировать с аргументом case, но я просто не могу придумать ничего конкретного. Это небольшая часть большего назначения, и мы не рассматривали ничего, кроме простых операторов Select и Update в SQL, поэтому я немного потерян. –

+1

хорошо, это звучит как довольно простая инструкция SELECT. Пожалуйста, отредактируйте свой вопрос, по крайней мере, с попыткой. Я имею в виду, что вы в основном можете это решить, просто поговорив с ним ... Вам нужно ВЫБРАТЬ u3paid из таблицы платежей, где u3 равняется чему-то ... Не путайте, просто введите то, что вы хотите на простом английском языке, Посмотрим на запрос ... – Trent

ответ

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

Работал отлично после нескольких неудач с синтаксисом, спасибо! –

+0

@NobleSixTaniguchi Рад я мог бы помочь :) – twoleggedhorse

Смежные вопросы