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

関連する問題