MYSQL CASE SELECT语句中的多个字段和变量

时间:2014-07-21 00:34:11

标签: mysql sql variables case

我正在尝试从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]'

谢谢大家...所以我需要:

  • 拆分我的案例陈述
  • 运行子查询以获取我的偏移类型并将其应用于我的WHERE子句
  • 加入我的桌子,谢谢你指出这一点。我忘记了

我将很快发布更新。

1 个答案:

答案 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'
;
相关问题