从数据库中检索价值&替换为文本

时间:2013-09-20 11:52:32

标签: php mysql

我目前正在执行此声明:

SELECT * FROM b_tasks WHERE CREATED_DATE BETWEEN '$from' AND '$to' AND GROUP_ID=13 ORDER BY ID DESC

返回:

Responsible ID   | Title   | Date Created
2                | Job 1   | 2013/09/20
4                | Job 2   | 2013/09/20

responsible_id表示数字形式的实际名称。例如,resonsible_id 2实际上是Bob Taylor,respons_id 4是Andrew Thompson。所以我想做的是用表名替换表中的数字,所以在2中,显示Bob Taylor以及4中显示Andrew Thompson的位置。

我目前正在使用PHP打印这些答案。

. $row['RESPONSIBLE_ID'] . 

我是否应该使用IF语句,如果responsible_id = 2显示Bob等等?

有什么想法吗?

更新:

有一个用户表是,这是:

表名: b_users

ID   | NAME   | LAST_NAME
1    | Andy   | Champ
2    | Bob    | Taylor
3    | Katie  | Gillo
4    | Andrew | Thompson

显然,此表中的ID与另一个表中的responsible_id相对应。我可以在上面的同一声明中加入这些吗?

2 个答案:

答案 0 :(得分:1)

你有一张可以加入的桌子吗?如果没有,您可以使用CASE

CASE WHEN Responsible_ID = 2 THEN 'Bob Taylor'
     WHEN Responsible_ID = 4 THEN 'Andrew Thompson'
     ELSE Responsible_ID
END AS Responsible_ID

SELECT a.*,
        CONCAT(b.Name, ' ',  b.Last_Name) Fullname
FROM b_tasks a
    INNER JOIN b_users b
        ON a.Responsible_ID = b.ID
WHERE CREATED_DATE BETWEEN '$from' AND '$to' AND GROUP_ID=13 
ORDER BY ID DESC

并致电$row['Fullname']

答案 1 :(得分:0)

试试这个

UPDATE `table` SET `id` = CASE
    WHEN id = 1 THEN 'value1'
    WHEN id = 2 THEN 'value2'
    WHEN id = 3 THEN 'value3'
    ELSE `id`
    END
WHERE id  in (1,2,3)