2014-01-30 48 views
0

我有下面這段代碼:列是曖昧使用INFORMATION_SCHEMA

SET @sql = CONCAT('SELECT s.name AS size,', 
    (SELECT REPLACE(
     GROUP_CONCAT(COLUMN_NAME), 
     'ps.product_id, ps.status, ps.created_by, ps.created_at, ps.updated_at, ps.deleted_at,', '' 
    ) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'product_sku' 
AND TABLE_SCHEMA = 'swafap'), ' FROM product_sku AS ps 
INNER JOIN size_code AS s ON s.id = ps.size_code_id 
WHERE ps.product_id = 4741'); 

PREPARE stmt1 FROM @sql; 
EXECUTE stmt1; 

我有很多我需要從product_sku選擇列。我看着流行的回答帖子來弄清楚。我選擇其他列和沒有問題的東西,但只要我做一個加入,它說id是不明確的,這是有道理的,因爲id在兩個表中都存在..

但是,我不確定如何正確地解決這個問題,因爲我仍然試圖圍繞它在這裏做什麼。

在product_sku中,有一個名爲'size_code_id'的列,我只需要在size_code表中引用該大小代碼的名稱。

任何幫助將不勝感激。我希望我可以用流利/雄辯=)將它翻譯成Laravel,因爲我非常喜歡這個解決方案。我原來的查詢是這樣的:

SELECT ps.manufacturer_sku, ps.sku, ps.units, s.name AS size, ps.smis, ps.purchase_cost, ps.branch_cost, 
ps.annual_sales_unit, ps.annual_sales_dollar, ps.pipeline_unit, ps.pipeline_dollar, ps.upc_barcode, ps.lvl_1_scc_barcode, 
ps.mast_carton_scc_barcode, ps.pallet_scc_barcode, ps.prod_manufacturer_comp, ps.part_no_comp, ps.wd_price_comp, 
ps.jobber_price_comp, ps.refinisher_price_comp, ps.retail_price_comp, ps.initial_lead_time, ps.reorder_lead_time, 
ps.min_quant, ps.manufacturer_location, ps.country_code, ps.tariff_code, ps.weight, ps.lngth, ps.height, ps.width, 
ps.shipping_desc, ps.lvl_1_quant, ps.master_carton_quant, ps.pallet_quant, ps.wd_price_rec, ps.jobber_price_rec, 
ps.refinisher_price_rec, ps.retail_price_rec 
FROM product_sku AS ps 
INNER JOIN size_code AS s ON s.id = ps.size_code_id 
WHERE ps.product_id = 4741; 

非常難看..

+0

使用您的一部開拓創新的查詢。用你的長選擇語句,然後而不是說內連接,嘗試「從product_sku作爲ps,size_code爲s其中ps.product_id = 4741和s.id = ps.size_code_id」 – woodlumhoodlum

+0

第二個查詢工作正常......但它很醜我試圖切換到我發佈的第一個。 – HaleyBuggs

+0

而且仍然說模棱兩可的通知 – HaleyBuggs

回答

1

我並不瞭解你的字符串處理(REPLACE邏輯)。但是,如果您使用information_schema數據來構建查詢,那麼您最好使用表名限定列名。

也就是說,也許

GROUP_CONCAT(COLUMN_NAME) 

應該

GROUP_CONCAT(CONCAT(TABLE_NAME,'.','COLUMN_NAME)) 
+0

http://pastebin.com/Z0auY95L在這裏,你可以在你的改變後看到它。現在它說產品_sku.re列不存在..我不知道它是如何得到該錯誤?回覆?我甚至不打電話給那個專欄。 這是董事會,我得到第一個查詢:http://stackoverflow.com/questions/9122/select-all-columns-except-one-in-mysql – HaleyBuggs