2017-08-14 45 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