2017-02-10 7 views
-1

Ausführen des folgenden MySQL Query und sind immer diese Fehlermeldung:MySQL Unbekannte Spalte, aber Spalte existiert

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 

Die Säule besteht in der wp_quantum_data Tabelle, so kann ich nicht erklären, warum dieser Fehler auftritt. Ich habe versucht, die Spalte in phpmyadmin umzubenennen, indem ich den Spaltennamen in und die Spaltenstruktur speichere, aber es sagt immer noch, dass die Spalte nicht existiert.

wp_quantum_data

+0

Haben Sie überprüft, ob Ihr Fall korrekt ist? ItemListID, ItemListId, ... –

+0

Ja, der Spaltenname ist auf 'ItemListID' gesetzt, und dies ist korrekt in der' wp_quantum_data' Tabelle, die ich vor kurzem von 'wp_quickbook_vendor_items' umbenannt habe. könnte es etwas mit dem Ändern des Namens der Datenbanktabelle zu tun haben? Was für mich auch keinen Sinn ergibt. –

+0

'LINKE VERBINDUNG wp_quickbook_items AS Qi', gibt es AS benötigt? Ich benutze normalerweise ohne es. – laser

Antwort

1

Das Problem ist, dass Sie die archaische implizite JOIN Syntax mit LEFT JOIN abmischen. Die LEFT JOIN kombiniert nur mit der Tabelle unmittelbar davor, die wp_hunter_quote_parts ist; Sie können nicht auf Spalten in wp_quantum_data in der ON Klausel verweisen.

Sie sollten aus der Angewohnheit implizite Joins verwenden und explizite JOIN Klauseln für alles verwenden.

Sie scheinen auch Ihre Joins in der falschen Reihenfolge zu haben. Da die Zeile in wp_hunter_quote_parts fehlen kann, sollte das die Tabelle LEFT JOIN mit Ihnen sein.

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

Nein, es ist möglich, dass' wp_quickbook_items' nichts enthält. Also muss ich das erklären. –

+0

'wp_quantum_data' wird höchstwahrscheinlich die meisten Ergebnisse haben, da dies von einem Datenimport herrührt. 'wp_hunter_quote_parts' wird nur dann gefüllt, wenn die Angebote genehmigt wurden, sodass sie abhängig vom genehmigten Status des Angebots ausgefüllt werden. Diese 2 Tabellen sind sehr identisch und müssen zusammengeführt werden, so dass ich die neuen Daten ('wp_hunter_quote_parts'), wenn sie NUR verfügbar ist, abnehme, ansonsten die alten Daten (' wp_quantum_data'). Das Hinzufügen von 'wp_quickbook_items' wird nur benötigt, um die Maßeinheit (UOM) zu erhalten, falls sie existiert. –

+0

OK, ich habe 'wp_quantum_data' als Master-Tabelle geändert, mit linken Joins zu beiden anderen Tabellen. – Barmar

-1

Ich denke, das Problem liegt im Datentyp. Ändern Sie den Datentyp des Felds varchar in int und prüfen Sie es. Möge es Arbeit

+0

Ich denke, Sie sollten aufhören, Ihre Kommentare in Form von Antworten zu schreiben –

Verwandte Themen