2014-02-22 121 views
0

下面的代碼讀取:Mysql的INSER與SELECT和WITH INNER JOIN CASE

--Code Created by Michael Berkowski 
create table dvd (
    dvd_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
); 
INSERT INTO dvd VALUES (1),(2),(3),(4); 

CREATE TABLE dvd_price (
    dvd_price_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    dvd_id INT NOT NULL, 
    rental_amount INT, 
    time_rented_for VARCHAR(10) 
); 

INSERT INTO dvd_price (dvd_id, rental_amount, time_rented_for) 
    SELECT 
    dvd_id, 
    2 AS rental_amount, 
    rental_period 
    FROM 
    dvd 
    CROSS JOIN (

     -- This is where I'm having issues 
     SELECT (CASE dvd.dvd_id 
       WHEN dvd.dvd_id = 1 
       THEN '1-Day' 
       ELSE '3-Day' 
       END) AS rental_period 
) rental_periods 

爲什麼我不能做一個CASE語句CROSS JOIN後,我將如何解決這一問題? 我得到錯誤,「字段列表中的」未知表'dvd':「,寫這個的最好方法是什麼?

+0

'dvd'表是在此子查詢未知。請解釋你想做什麼,爲什麼交叉加入? – krokodilko

+0

基本上我試圖做一些數據製作,在這種情況下,我試圖插入數據時,dvd_id = 1,然後插入rental_period'1天',否則所有其他dvd_id插入'3天',如果這是有道理的。 –

回答

1

試試這個方法:

INSERT INTO dvd_price (dvd_id, rental_amount, time_rented_for) 
    SELECT 
    dvd_id, 
    2 AS rental_amount, 
    CASE dvd.dvd_id 
       WHEN dvd.dvd_id = 1 
       THEN '1-Day' 
       ELSE '3-Day' 
       END 
    FROM 
    dvd