2012-02-06 181 views
1

我試圖從我的第二張桌上的字段DiscountMarkupPriceRate1獲取價格以顯示在PHP中。使用JOIN匹配第一個結果

我的查詢的第一部分拉我需要的東西,所有可見產品與庫存Parentsku。即GTR101。

我試圖加入第二個表格,並且只檢索父母(GTR101%)的第一個DiscountMarkupPriceRate1,其中ItemCustomerPriceLevelM

這是我的表的樣子。這基本上是我的查詢上半年之前的結果聯接(全部剝離其他領域,我需要的):

**INVENTORY** 
SKU  store_quantity  parent_sku visible 
---------------------------------------------------------------- 
GTR101  20  NULL  Y 
GTR102  100  NULL  Y 
GTR103  88  NULL  Y 

這是第二個表:

**ins_imb_1** 

DiscountMarkupPriceRate1 ItemNumber ItemCustomerPriceLevel   
----------------------------------------------------------------- 
15.950    GTR101S   M 
15.950    GTR101M   M 
11.950    GTR101L   M 
10.000    GTR101S   T 

我想獲得

GTR101 15.95 

和這裏就是我有一個查詢:

Select * 
from INVENTORY 
where parent_sku='' 
AND store_quantity > 0 
AND SKU like '%GTR%' 
AND visible='Y' 

LEFT JOIN ins_imb_1 
ON ins_imb_1.ItemNumber = 
    (
    SELECT ItemNumber, ItemCustomerPriceLevel, DiscountMarkupPriceRate1 
    FROM ins_imb_1 
    WHERE ins_imb_1.ItemNumber% = INVENTORY.SKU 
    AND ins_imb_1.ItemCustomerPriceLevel = 'M' 
    ORDER BY 
      INVENTORY.SKU 
    LIMIT 1 
    ) 
+0

我建議將'ItemNumber'存儲爲'GTR101',並在其自己的字段中存儲'S'或'M'或'L'。 – 2012-02-06 15:37:11

+0

你有什麼錯誤嗎? – 2012-02-06 15:37:45

+0

「警告:mysql_fetch_array()期望參數1是資源,」布爾中給出的「是PHP錯誤,但在PHPMYADMIN中我只是沒有得到任何結果 – willboudle 2012-02-06 15:40:39

回答

1

我在這裏看到的第一件錯誤是JOIN需要在FROM語句之後和WHERE之前。

此外,您在LEFT JOIN中的子查詢是錯誤的。

LEFT JOIN ins_imb_1 
ON ins_imb_1.ItemNumber = 
(
    SELECT ItemNumber, ItemCustomerPriceLevel, DiscountMarkupPriceRate1 

您的子查詢應只返回一個字段(爲了與ins_imb_1.ItemNumber進行比較)。

我不知道,如果你甚至需要在這裏的子查詢,你可以做這樣的事情:

LEFT JOIN ins_imb_1 
ON ins_imb_1.ItemNumber LIKE CONCAT(INVENTORY.SKU, '%') 
AND ins_imb_1.ItemCustomerPriceLevel = 'M' 

我也看到,在這裏可以優化的幾件事情。

where parent_sku=''應該是where parent_sku IS NULL

AND SKU like '%GTR%'應該是AND SKU like 'GTR%'(因爲SKU總是以'GTR'開頭)。

SELECT * 
FROM INVENTORY 

LEFT JOIN ins_imb_1 
ON ins_imb_1.ItemNumber LIKE CONCAT(INVENTORY.SKU, '%') 
AND ins_imb_1.ItemCustomerPriceLevel = 'M' 

WHERE parent_sku IS NULL 
AND store_quantity > 0 
AND SKU LIKE 'GTR%' 
AND visible = 'Y' 
+0

哇,我看到爲什麼你的名字是Rocket !!這是做的,但是顯然我撒了謊,因爲parent_sku字段只是空的而不是NULL,但是一旦我改變了它,它就完全取決於我期待的結果!並且感謝更好的理解,當我大聲朗讀時,我猜測它很好對於遵循JOIN的WHERE子句是有意義的。 – willboudle 2012-02-06 16:02:26

+0

很高興我能幫忙:-) – 2012-02-06 16:08:10

相關問題