Mysql获取数据

时间:2011-12-02 11:08:48

标签: mysql sql

我有一张桌子:tbl_offer(offer_name,location)。对于特定商品,我在位置列中有多个位置,以逗号分隔。

示例:

如果优惠为offer1,则我在位置列中有Bangalore, Mumbai, Chennai

现在想要编写一个查询,它将分别获取每个位置(由特定商品的逗号分隔)。我想在单独的记录中选择offer1它应该获取Bangalore Mumbai and Chennai

1 个答案:

答案 0 :(得分:1)

正如@Cylindric告诉你的,如果你可以改变数据库设计!
创建两个表,一个用于商品,一个用于位置。

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

所以(例如)你在OFFERS和
中有(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')
LOCATIONS中的(1, 'Bangalore'), (2, 'Mumbai') and (3, 'Chennai')和 OFFERS_LOC中的(1, 1), (1, 2) and (1, 3)

您的查询将是

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
相关问题