mysql子查询字符串位置_如何将字符串从子查询连接到mysql中的单个行?

我有三个表:

table "package"

-----------------------------------------------------

package_id int(10) primary key, auto-increment

package_name varchar(255)

price decimal(10,2)

table "zones"

------------------------------------------------------

zone_id varchar(32) primary key (ex of data: A1, Z2, E3, etc)

table "package_zones"

------------------------------------------------------

package_id int(10)

zone_id varchar(32)

我想做的是返回包表中的所有信息PLUS该包的区域列表。我想要按字母顺序和逗号分隔的区域列表。

所以我要找的输出是这样的…

+------------+---------------+--------+----------------+

| package_id | package_name | price | zone_list |

+------------+---------------+--------+----------------+

| 1 | Red Package | 50.00 | Z1,Z2,Z3 |

| 2 | Blue Package | 75.00 | A2,D4,Z1,Z2 |

| 3 | Green Package | 100.00 | B4,D1,D2,X1,Z1 |

+------------+---------------+--------+----------------+

我知道我可以做一些事情在PHP与表示层,以获得所需的结果。问题是,我想能够排序zone_list ASC或DESC甚至使用“WHERE zone_list LIKE”等。为了做到这一点,我需要这在MYSQL。

我不知道如何开始解决这个问题。我试着使用子查询,但它不断抱怨多行。我试图将多行并入单个字符串,但显然MySQL不喜欢这样。

提前致谢。

更新!

这里是有兴趣的人的解决方案。

SELECT

`package`.*,

GROUP_CONCAT(`zones`.`zone` ORDER BY `zones`.`zone` ASC SEPARATOR ',' ) as `zone_list`

FROM

`package`,

`package_zones`

LEFT JOIN

(`zones`,`ao_package_zones`) ON (`zones`.`zone_id` = `package_zones`.`zone_id` AND `package_zones`.`package_id` = `package`.`package_id`)

GROUP BY

`ao_package`.`package_id`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值