2017-02-10 1 views
-1

次のMySQLのクエリを実行すると、このエラーを取得しています存在:MySQLの未知の列が、列は

database error Unknown column 'qd.ItemListID' in 'on clause'

SELECT 
    IFNULL(hqp.IsActive, qd.ItemName) AS Item_Name, DATE_FORMAT(IFNULL(hqp.SalesDate, qd.SalesDate), '%m-%d-%Y') AS effectDate, IFNULL(hqp.NoBid, qd.NoBid) AS noBid, IFNULL(hqp.VendorName, qd.VendorName) AS vendor, IFNULL(hqp.Source, qd.Source) AS source, IFNULL(hqp.Type, qd.Type) AS type, IFNULL(hqp.Cost, qd.PurchaseCost) AS cost, IFNULL(hqp.Price, qd.SalesPrice) AS price, IFNULL(hqp.ConditionCode, '') AS conditionCode, qi.UnitOfMeasureSetRef_FullName AS uom 
FROM wp_quantum_data AS qd, wp_hunter_quote_parts AS hqp 
LEFT JOIN wp_quickbook_items AS qi ON (qi.ListID = IFNULL(qd.ItemListID, hqp.Item_ListID)) 
WHERE qd.IsActive = 1 || hqp.IsActive = 1 
GROUP BY Item_Name 
ORDER BY Item_Name ASC 

このエラーが発生している理由を私が説明することはできませんので、列がwp_quantum_dataテーブルに存在します。私は列の名前を入力して列の構造を保存することで、phpmyadminの列の名前を変更しようとしましたが、列が存在しないということはまだあります。

wp_quantum_data

+0

あなたのケースが正しいかどうかチェックしましたか? ItemListID、ItemListId、... –

+0

はい、列名は 'ItemListID'に設定されています。これは' wp_quickbook_vendor_items'から最近名前を変更した 'wp_quantum_data'テーブルでは正しいです。それはデータベーステーブルの名前を変更することと関係がありますか?どちらも私には意味がありません。 –

+0

「LEFT JOIN wp_quickbook_items AS qi'」が必要ですか?私は通常それなしで使う。 – laser

答えて

1

問題は、あなたがLEFT JOINと古風な暗黙のJOIN構文を混合していることです。 LEFT JOINは、その直前のテーブルとのみ組み合わせます(wp_hunter_quote_parts)。 ON句のwp_quantum_dataの列を参照することはできません。

暗黙的な結合を使用して明示的なJOIN句をすべて使用してください。

また、間違った順序で結合されているようです。行はwp_hunter_quote_partsで見つからない可能性があるので、それはLEFT JOINとする必要があります。

SELECT 
    IFNULL(hqp.IsActive, qd.ItemName) AS Item_Name, DATE_FORMAT(IFNULL(hqp.SalesDate, qd.SalesDate), '%m-%d-%Y') AS effectDate, IFNULL(hqp.NoBid, qd.NoBid) AS noBid, IFNULL(hqp.VendorName, qd.VendorName) AS vendor, IFNULL(hqp.Source, qd.Source) AS source, IFNULL(hqp.Type, qd.Type) AS type, IFNULL(hqp.Cost, qd.PurchaseCost) AS cost, IFNULL(hqp.Price, qd.SalesPrice) AS price, IFNULL(hqp.ConditionCode, '') AS conditionCode, qi.UnitOfMeasureSetRef_FullName AS uom 
FROM wp_quantum_data AS qd 
LEFT JOIN wp_quickbook_items AS qi ON qi.ListID = qd.ItemListID 
LEFT JOIN wp_hunter_quote_parts AS hqp ON qi.ListID = hqp.ItemListID AND hqp.IsActive = 1 
WHERE qd.IsActive = 1 
GROUP BY Item_Name 
ORDER BY Item_Name ASC 
+0

いいえ、 'wp_quickbook_items'もそれに何も含まれていない可能性があります。これは、' wp_quickbook_items'も同様です。だから私はそれを説明する必要があります。 –

+0

'wp_quantum_data'はデータのインポートに由来するので、ほとんどの場合、結果が最も多くなります。 'wp_hunter_quote_parts'は、引用符が承認されたときにだけ入力されるので、引用された承認された状態に応じて入力されます。これらの2つのテーブルは非常に同一であり、マージする必要があり、新しいデータ( 'wp_hunter_quote_parts')が利用可能なときのみ取得します。そうでなければ古いデータ(' wp_quantum_data')を取得します。 'wp_quickbook_items'の追加は実際に存在すれば測定単位(UOM)を得るためにのみ必要です。 –

+0

OK、 'wp_quantum_data'をマスタテーブルに変更しました。残りの両方のテーブルには左の結合があります。 – Barmar

-1

データ型に問題があると思います。フィールドvarcharのデータ型をintに変更してチェックします。それは仕事であるかもしれない

+0

あなたはあなたのコメントを回答の形で書くのを止めるべきだと思います –

関連する問題