2011-07-17 30 views
0

您好我在做sql查詢方面還是很新的我想用三個其他表的主鍵來更新表。我沒有得到任何錯誤,但它顯然不工作,因爲我的表不更新...有人可以告訴我我做錯了什麼?試圖用其他三個表的主鍵更新表

更新表被稱爲 「SET_COLOR」

$results_array = mysql_query(" 
    SELECT * school_art 
    JOIN baseimage 
    ON school_art.series_code = baseimage.basefolder 
    WHERE baseimage.image_type = 'B' 
    UPDATE set_colors SET 
    set_colors.school_art_id = school_art.id, 
    set_colors.baseimage_id = baseimage.id, 
    set_colors.baseimage_layer = baseimage.layer 
    ;"); 
    return !empty($result_array) ? array_shift($result_array) : false; 

請幫助..

回答

0

你接近,但根據update syntax,我們必須將它洗了一下週圍:

UPDATE set_colors 
JOIN school_art 
JOIN baseimage 
ON school_art.series_code = baseimage.basefolder 
set_colors.school_art_id = school_art.id, 
set_colors.baseimage_id = baseimage.id, 
set_colors.baseimage_layer = baseimage.layer 
WHERE baseimage.image_type = 'B' 
  • 總是第一個UPDATE
  • 然後表引用,包括任何你想要做的JOIN
  • 然後SET,然後是要設置的列(在JOINed查詢中,您也可以在其他表中設置列,而不是第一個)。
  • 然後是WHERE條款。

但是:不要運行這個:這將更新整個表。基於set_colors中的哪些列要選擇應該更新的記錄?

+0

謝謝,是的,我想更新某些記錄。我創建一個類,所以會是這樣的工作: – GGcupie

+0

'公共靜態函數update_ set_colors($值){UPDATE set_colors JOIN school_art JOIN baseimage ON school_art {$值} = baseimage.basefolder set_colors.school_art_id = school_art。 .id, set_colors.baseimage_id = baseimage.id, set_colors.baseimage_layer = baseimage.layer WHERE baseimage.image_type ='B'' – GGcupie

+0

對於查詢,我們需要知道基於set_colors中的哪些列可以選擇行。 – Wrikken