2015-02-05 4 views
0

데이터베이스에 존재하지 않으며 변경되지 않는 데이터에 대한 조인을 시도하고 있습니다. 그게 가능mysql의 명시 적 테이블에서 선택하십시오.

나는

SELECT val, campaign FROM values 
LEFT JOIN (SELECT campaign, start, end FROM (
    ('Spring 2104', '2014-05-01', '2014-08-01'), 
    ('Winter 2014', '2014-08-01', '2014-12-31') 
) as campaign_table ON (
    values.date > campaign_table.start AND 
    values.date < campaign_table.end 
) 

을하고 싶지? 나는 임시 테이블을 만들 수는 있지만, 실제로하려고하지 않는 것은 실제로 작동하지 않습니다.

+4

왜 시도해보고 작동하는지보십시오. – Mehraban

+0

올해는 어떻습니까? – Gervs

답변

0

union all을 사용하여 더미 세트를 만들 수 있습니다. 더미 데이터 집합에 소수의 행만있는 경우를 고려하면 실행 가능한 솔루션입니다.

SELECT val 
    ,campaign 
FROM 
VALUES 
LEFT JOIN (
    SELECT 'Spring 2104' campaign 
     ,'2014-05-01' start 
     ,'2014-08-01' [end] 

    UNION ALL 

    SELECT 'Winter 2014' 
     ,'2014-08-01' 
     ,'2014-12-31' 
    ) AS campaign_table ON 
VALUES.DATE > campaign_table.start 
    AND 
VALUES.DATE < campaign_table.[end] 
0

은 아마 당신이 한 번에 모든 쿼리를 실행해야합니다

CREATE TABLE IF NOT EXISTS `tempo`(`campaign_name` VARCHAR(100), `from` DATE, `to` DATE); 
INSERT INTO tempo(campaign_name, `start`, `end`) VALUES ('Spring 2104', '2014-05-01', '2014-08-01'),('Winter 2014', '2014-08-01', '2014-12-31'); 
SELECT t1.val, t1.campaign, t2.campaign_name FROM `values` t1, `tempo` t2 WHERE t1.date BETWEEN t2.start AND t2.end; 
DROP TABLE `tempo`; 

은 또한 당신이 할 수 있습니다 :

시도 임시 테이블을 CREATE!