2017-08-14 43 views
-1

我有我的表關係。我有這張添加新採購項目的表格,它有2欄 - line_manager_remarkc_level_remark,它顯示了經理和c級經理的審批狀態。從2個MySQL表中獲取值的錯誤

enter image description here

這些列的值從另一個表

enter image description here

得到了現在,我有獲得項目的狀態(定義)的問題。這是行不通的。

這是我做了什麼

SELECT 
    a.*, 
    b.* 
FROM 
    request_items AS a, 
    request_status AS b 
WHERE 
    a.line_manager_remark = b.id 
    AND 
    a.c_level_remark = b.id 
    AND 
    a.request_id = '$id' 
    AND 
    state = 'active' 
+2

*「**從2個MySQL表中獲取值的錯誤」* - 究竟是什麼? –

+0

您應該避免遺留'FROM a,b WHERE a.id = b.id'語法的連接,並使用顯式的'RIGHT/LEFT/OUTER/INNER JOIN'語法來代替。 – Dai

回答

1
SELECT 
    request_items.*, 
    request_status_line_manager.definition AS line_manager_status, 
    request_status_c_level.definition AS c_level_status, 
FROM 
    request_items 
    INNER JOIN request_status AS request_status_line_manager 
     ON request_items.line_manager_remark = request_status_line_manager.id 
    INNER JOIN request_status AS request_status_c_level 
     ON request_items.c_level_remark = request_status_c_level.id 
WHERE 
    request_items.state = 'active' 
    AND 
    request_items.request_id = '$id' 

我注意 - 如果'$id'立即停止,PHP/Perl的串插的證據和使用參數化的查詢,否則您的查詢很容易受到SQL注入(並且我假設request_items.request_idint而不是文本列太...)

+0

謝謝你。這是一些瘋狂的查詢 – radioactive