2013-03-24 3 views
-1

가입은 어떻게 다른 테이블을 포함하는 다음는에서

#1054 - Unknown column 'vendor.VName' in 'on clause' 

처럼 나는 오류가 발생하고이 쿼리를 실행에 내 MySQL의 쿼리

SELECT 
    opensalesorder.so_number, 
    items.VendorName, 
    opensalesorder.item_number, 
    items_custom_fields.FieldValue AS `Stock Item`, 
    vendor_custom_fields.FieldValue AS `Paid Freight Allowance`, 
    items.QuantityOnHand, 
    items.ReorderPoint, 
    items.MaxQty, 
    SUM(opensalesorder.quantity_on_order), 
    items.PurchaseCost, 
    items.VendorName, 
    items.VendorName, 
    items.PurchaseCost, 
    opensalesorder.status, 
    items.ItemType 
FROM 
    vendor, 
    `opensalesorder` 
inner join items 
    on opensalesorder.item_number = items.ItemName 
JOIN items_custom_fields 
    ON items_custom_fields.ItemName = items.ItemName 
JOIN vendor_custom_fields 
    ON vendor_custom_fields.VName = vendor.VName 
WHERE opensalesorder.item_number = items.ItemName 
     and items_custom_fields.FieldName ='Stock Item' 
     and vendor_custom_fields.FieldName ='Paid Freight Allowance' 
     and opensalesorder.status NOT LIKE 'on po' 
     AND opensalesorder.so_number NOT IN ('2','3') 
     AND items.VendorName NOT IN ('Access') 
     AND opensalesorder.item_number NOT IN ('018-0001') 
     group by opensalesorder.item_number 
LIMIT 100 

입니다하지만 FROM 절에서 공급 업체 테이블을 포함했다. JOIN에 테이블을 포함시키는 것이이 올바른 방법입니까? 그래서이 쿼리에 무슨 문제가 있습니까?

편집 :

SHOW는 vendor_custom_fields

CREATE TABLE `vendor_custom_fields` (
    `VName` text NOT NULL, 
    `FieldName` text NOT NULL, 
    `FieldValue` text NOT NULL, 
    `FieldType` text NOT NULL, 
    PRIMARY KEY (`VName`(120),`FieldName`(120)), 
    FULLTEXT KEY `VName_index` (`VName`) 
) 
에 대해 만든 항목에 대한 CREATE opensalesorder 표를

CREATE TABLE `items` (
    `ItemName` varchar(30) NOT NULL, 
    `VendorName` varchar(40) DEFAULT NULL, 
    `QuantityOnHand` int(11) DEFAULT NULL, 
    `QuantityOnSalesOrder` int(11) DEFAULT NULL, 
    `ReorderPoint` int(11) DEFAULT NULL, 
    `PurchaseCost` double DEFAULT NULL, 
    `AverageCost` double DEFAULT NULL, 
    `SalesPrice` double DEFAULT NULL, 
    `PurchaseDesc` varchar(200) DEFAULT NULL, 
    `SalesDesc` varchar(200) DEFAULT NULL, 
    `ItemType` varchar(30) DEFAULT NULL, 
    `FreeCode` int(11) DEFAULT NULL, 
    `SubGroup` varchar(10) DEFAULT NULL, 
    `DateNewItem` date DEFAULT NULL, 
    `Notes` text, 
    `MaxQty` int(11) DEFAULT NULL, 
    `QuantityOnPO` int(11) DEFAULT NULL, 
    PRIMARY KEY (`ItemName`), 
    KEY `ItemName` (`ItemName`), 
    KEY `VendorName` (`VendorName`) 
) 

SHOW를 표를

CREATE TABLE `opensalesorder` (
    `so_number` decimal(10,0) NOT NULL, 
    `item_number` varchar(20) NOT NULL, 
    `quantity_on_order` int(11) NOT NULL, 
    `quantity_to_order` int(11) NOT NULL, 
    `status` varchar(20) NOT NULL, 
    `editsequence` text NOT NULL, 
    `TxnLineID` text NOT NULL, 
    `TxnID` text NOT NULL, 
    `dateCreated` date NOT NULL, 
    `shipDate` date NOT NULL, 
    `customer` text NOT NULL, 
    `itemclass` text NOT NULL, 
    UNIQUE KEY `unique_mapping` (`so_number`,`item_number`), 
    KEY `so_number` (`so_number`), 
    KEY `item_number` (`item_number`), 
    KEY `status` (`status`) 
) 

SHOW를 테이블 만들기 0

SHOW 내가 문제가이 (가) (unimplied)이 '진술'조인과 조인 암시 혼합 생각 공급 업체

CREATE TABLE `vendor` (
    `VName` varchar(60) NOT NULL, 
    `CompanyName` varchar(100) NOT NULL, 
    `Address1` varchar(120) NOT NULL, 
    `Address2` varchar(120) NOT NULL, 
    `City` varchar(40) NOT NULL, 
    `State` varchar(50) NOT NULL, 
    `PostalCode` varchar(13) NOT NULL, 
    `Phone` varchar(13) NOT NULL, 
    `Fax` varchar(13) NOT NULL, 
    `AlternatePhone` varchar(13) NOT NULL, 
    `AlternateContact` varchar(30) NOT NULL, 
    `Email` varchar(40) NOT NULL, 
    `AccountNumber` varchar(30) NOT NULL, 
    `Balance` double NOT NULL, 
    `RepEmail` varchar(40) NOT NULL, 
    `FreightAllowance` double DEFAULT NULL, 
    `MinimumPOLimit` double DEFAULT NULL, 
    `Notes` text NOT NULL, 
    PRIMARY KEY (`VName`) 
) 
+0

글쎄, 벤더 테이블에'VName' 컬럼이 있습니까? 부가 설명에서'items.VendorName'을 결과리스트에 두 번 포함 시켰습니다. – Perception

+0

예 ... 공급 업체에 VName이 있습니다. – Pratik

+0

@Perception Thrice. :) – hjpotter92

답변

0

위한 테이블을 만듭니다. 'vendor'를 정규 참여자로 입력하면 쿼리가 정상적으로 작동합니다.

가 여기에 fiddle이다 (난 당신이 테이블 정의를 포함하지 않았다으로 'items_custom_fields'에 대한 참조를 언급했다).

+0

items_custom_fields가 동일한 테이블 구조를 만들었으므로 VName을 ItemName으로 변경하십시오. – Pratik

+0

어느 쪽이든 - 여기에는 문제가 없습니다. 쿼리의 구조를 변경하면 (약간만) 쿼리가 작동합니다. – ethrbunny

관련 문제