2011-07-18 59 views
1

我會疲於摸不着頭腦....請幫助:( 我有三個表,我從其他兩個表中的數據更新表更新新表加入兩個其他表?

更新表:set_colors 列:setcolors_id (主),art_id(INT),baseimage_id(INT),COLOR_ID(INT)

兩個表我從

表名稱獲取信息:藝術 列:ID(主),artname(VARCHAR), series_code(varchar)

表名:baseimage 列:ID(主),base_folder(VARCHAR),圖形,IMAGE_TYPE(VARCHAR),層(INT) 示例數據:

series_code從現有技術表和base_folder from baseimage表具有相同的值,但藝術表可以包含數百個重複的系列代碼,並且baseimage可能只有5個最大值(如果具有相同的base_folder名稱但具有不同的圖層)。

示例數據:

Art Table baseimage

我想更新與現有技術表[ID],baseimage [ID]的set_colors表,並且其中所述baseimage = 「B」,所以它需要做的是通過藝術表「層」迭代column--的COLOR_ID將再SQL查詢進行更新,因此某些行可能是int或NULL

所以結果應該是這個樣子:

Result Set Colors table

我想出了這個,但它不起作用,沒有錯誤信息。它只是不填充表格。我在想什麼?

$result_array = mysql_query(" 
UPDATE set_colors 
JOIN art 
JOIN baseimage 
ON art.series_code = baseimage.base_folder 
SET set_colors.school_art_id = art.id, 
set_colors.baseimage_id = baseimage.id, 
set_colors.baseimage_layer = baseimage.layer 
WHERE baseimage.image_type = 'B'" 
); 
return !empty($result_array) ? array_shift($result_array) : false; 
+0

你真的想更新現有的行或者是你實際上是試圖插入新行? –

+0

現在好了,這是一個好點!我想它會在INSERT中,它不會存在...... doh。如果是這樣的話查詢是相同的,除了UPDATE,它應該讀取INSERT?其實我只是試了一下,它沒有工作,所以我仍然做錯了 – GGcupie

回答

0

基礎上的評論,我覺得你的插入語句應該是這個樣子:

INSERT INTO set_colors 
    (art_id, baseimage_id) 
    SELECT a.id, b.id 
     FROM baseimage b 
      INNER JOIN art a 
       ON b.base_folder = a.series_code 
     WHERE b.image_type = 'B' 
+0

非常感謝你!對於新手來說,有時候真的很吸引人,對於一個相對較新的人來說,顯而易見的東西顯然是完全難以捉摸的。再次感謝,這真是太棒了! – GGcupie

0

我推薦查看MySQL UPDATE文檔here。我相信你的更新需要根據MySQL語法進行重構。

0

首先,當您說「填充表格」時,您是否期望此查詢插入新行?更新查詢不會創建新行,只會更新表中已存在的行。第二,看起來你期待mysql_query返回數組。這個函數在執行插入或更新查詢時僅返回truefalse,具體取決於查詢是否正確執行。

+0

啊好吧。其中一天,我會得到這個權利 – GGcupie