我正在尝试从case语句中选择多个字段。我知道下面的语法是错误的,但它描述了我想要做的事情。特别注意CASE语句和@type变量。我是否在正确的轨道上,如果我不是一些有帮助的正确方向的诗人将不胜感激。
Select
(tasks.id) As 'id',
(tasks.Title) As 'title',
(Excursions.ExcursionsColour) As 'backgroundColor',
(Excursions.ExcursionsColour) As 'borderColor',
CONCAT('taskcomplete.php?ex=',Excursions.idExcursions,'&id=',tasks.id) AS 'url',
CASE
WHEN Excursions.typeID = '1' THEN
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.Day_Incursion_days DAY)) As 'start',
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.Day_Incursion_days DAY)) As 'end';
SET @type = 'tasks.Day_Incursion';
WHEN '2' THEN
tasks.Overnight_Interstate,
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.Overnight_Interstate_days DAY)) As 'start',
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.Overnight_Interstate_days DAY)) As 'end';
SET @type = 'tasks.Overnight_Interstate';
WHEN '3' THEN
tasks.International,
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.tasks.International_days DAY)) As 'start',
date_sub(Excursions.ExcursionsStart, INTERVAL $tasks.tasks.International_days DAY)) As 'end';
SET @type = 'tasks.International';
END CASE;
From
tasks,
Excursions
Where
@type = 'Y' And
tasks.Sub_Task_Title = '' And
ExcursionsUser = '$_SESSION[user]'
谢谢大家...所以我需要:
我将很快发布更新。
答案 0 :(得分:0)
您可以从单个case语句中返回多个字段。你需要用相同的条件重复一次,每个字段一次。
此外情况下的SET是错误的。
我认为你正在寻找这样的东西:
Select * from
(
select
CASE Excursions.typeID
WHEN '1' THEN
tasks.Day_Incursion
WHEN '2' THEN
tasks.Overnight_Interstate
WHEN '2' THEN
tasks.International
end as type
from
...
)
where type = 'Y'
;