2013-05-01 122 views
0

我有以下代碼,如果我將代碼作爲sql腳本運行,但如果我想從中創建視圖,則出現此錯誤:1166 - 錯誤的列名''mysql union all創建視圖時

select `c`.`package_id` AS `package_id`, 
`c`.`student_id` AS `student_id`, 
`bs`.`name` AS `stud_name`, 
`c`.`payed_date` AS `payed_date`, 
(case `c`.`type` when 'e' then 'Vizsgadíj' when 'c' then 'Tanfolyam díj' else '' end) AS `name`, 
`c`.`course_price` AS `price`, 
`c`.`pay_form` AS `pay_form`, 
`c`.`venue_id` AS `venue_id` 
from (`bma_student_pays` `c` 
join `bma_students` `bs` on((`bs`.`id` = `c`.`student_id`))) 

union all 

select '0' AS `0`,'0' AS `0`,'' AS ``,`e`.`making_date` AS `making_date`,`e`.`name` AS `name`,`e`.`price` AS `price`,`e`.`type` AS `type`,`e`.`venue_id` AS `venue_id` 
from `bma_extra_makings` `e` 

union all 

select '','','',i.inv_due,i.inv_name,i.inv_amount,i.`mode`,i.venue_id 
from bma_invoices i 
where i.inv_type='K' 

任何幫助都會很好。

謝謝!

回答

2

在你的第二個查詢(第一個UNION ALL),你作爲你的第三列:

'' AS `` 

這是無效的 - 刪除AS子句,都應該很好。

+0

我會upvote這個,如果我可以:)我認爲你有它! – Chris 2013-05-01 19:07:17

+0

此外,所有列在第一個查詢中都是別名。不需要(也可能不正確)將聯合查詢中的列別名與第一個查詢中的列別名不同。 OP可以完全關閉第二個查詢的別名。 – 2013-05-01 19:08:34

+0

@DanJ:絕對,但是這不會破壞視圖的創建。 – PinnyM 2013-05-01 19:14:48