2011-12-02 100 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