2011-12-02 93 views
-1

我有一個表格:tbl_offer(offer_name,location)。對於特定優惠,我在位置列中有多個位置,並以逗號分隔。Mysql獲取數據

實施例:

如果報價是offer1然後我在位置列Bangalore, Mumbai, Chennai

現在想編寫一個查詢,它將分別獲取每個位置(用逗號分隔特定商品)。我想選擇offer1它應該在單獨的記錄中獲取Bangalore Mumbai and Chennai

+5

如果你還在開發這個應用程序,將其更改*現在*這樣,你不存儲在一個字段逗號分隔的列表。否則[搜索這裏](http://stackoverflow.com/search?q=mysql+split+column)成千上萬的關於同樣的事情的結果。 – Cylindric

+0

雅..我有想法..謝謝了很多。 – bid

回答

1

正如@Cylindric告訴你的,如果你可以改變數據庫的設計!
創建兩個表格,一個用於優惠,另一個用於位置。

OFFERS (id, name) 
LOCATIONS (offer_id, name) 

所以,(例如)你在商供應(1, 'offer1')
(1, 'Bangalore'), (1, 'Mumbai') and (1, 'Chennai')的地點。

您的查詢會更容易:

SELECT o.name, l.name FROM offers o 
INNER JOIN locations l ON o.id = l.offer_id 

說實話,你應該有三個表,以避免地方重複:

OFFERS  (id, name) 
LOCATIONS (id, name) 
OFFERS_LOC (offer_id, loc_id) 

你在商供應
(1, 'offer1')
(1, 'Bangalore'), (2, 'Mumbai') and (3, 'Chennai')在LOCATIONS和
(1, 1), (1, 2) and (1, 3) OFFERS_LOC。

您的查詢就會

SELECT o.name, l.name FROM offers o 
INNER JOIN offers_loc ol ON o.id = ol.offer_id 
INNER JOIN locations l ON ol.loc_id = l.id 
+0

非常感謝您的建議Mcrco。 – bid