简体   繁体   English

MySQL视图以逗号分隔结果

[英]MySQL view with comma separated result

I am creating a view in MySQL Workbench: 我在MySQL Workbench中创建一个视图:

Tables: 表:

在此处输入图片说明

I want to create a view that will return records in such a way where, i get all rows from addressBook table & data field values separated by comma from addressBookData table. 我想创建一个视图,将这样的方式在那里,我得到来自addressBookData表用逗号分隔的地址簿表及数据字段值的所有行返回记录。

How to do that? 怎么做?

My view is like this: 我的看法是这样的:

CREATE VIEW `addressBook_view` AS
SELECT
    `addressBook`.*,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'mobile') AS `mobile`,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'phone') AS `phone`,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'fax') AS `fax`
FROM
    `addressBook`

Try something like this: 尝试这样的事情:

SELECT ab.*, abd.type, GROUP_CONCAT(abd.data SEPARATOR ',')
FROM addressBook ab 
LEFT JOIN addressBookData abd ON ab.id = abd.addressBook_id
GROUP BY ab.id, abd.type

You can create view based on this query by yourself. 您可以自己根据此查询创建视图。

Ended up doing this: 最终这样做:

CREATE VIEW `addressBook_view` AS
SELECT
    `addressBook`.*
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'mobile' GROUP BY `id`) AS `mobile`,
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'phone' GROUP BY `id`) AS `phone`,
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'fax' GROUP BY `id`) AS `fax`
FROM
    `addressBook`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM