首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL计数并使用来自另一个表的like列出该事件

MySQL计数并使用来自另一个表的like列出该事件
EN

Stack Overflow用户
提问于 2014-11-28 11:31:12
回答 2查看 91关注 0票数 1

我有两张这样的桌子:

代码语言:javascript
复制
cars                            users
-------------------------      ---------------------------
| car    | description   |     | name   | car_owned      |
-------------------------      ---------------------------
| BMW    | Good Choice   |     | abcd   | BMW, nano      |
| Ferrari| better choice |     | efgh   | Ferrari, BMW   |
| nano   | with in budget|     | ijkl   | nano           |
--------------------------     | mnop   | nano           |
                               ---------------------------

我试图创建一个程序:

代码语言:javascript
复制
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `car_count`()
BEGIN
SELECT `cars`.`car`, `users`.count(*) FROM `cars`, `users` WHERE `users`.`car_owned`
                       LIKE CONCAT('%',`cars`.`car` , '%') ;.
END $$
DELIMITER ;

我需要这样的东西:

代码语言:javascript
复制
----------------------
| car     | count(*) |
----------------------
| BMW     | 2        |
| Ferrari | 1        |
| nano    | 3        |
----------------------
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-28 13:46:57

再加一张桌子。不如:

代码语言:javascript
复制
users table
--------------   
| id  |  name
--------------
| 1   |  abc 
| 2   |  def
| 3   |  ghi


cars table                  
--------------------------------   
| id  |  name    | description   
--------------------------------
| 1   |  BMW     | Good Choice   
| 2   |  Ferrari | better choice 
| 3   |  nano    | with in budget


user_cars table
------------------
user_id  |  car_id
------------------
1        |   1
1        |   3
2        |   2
2        |   1
....

然后得到你能做的每一辆车的用户数量

代码语言:javascript
复制
select c.name, count(u.id) as owned_count
from cars c
left join user_cars uc on uc.car_id = c.id
left join users u on uc.user_id = u.id
group by c.name
票数 0
EN

Stack Overflow用户

发布于 2014-11-28 11:39:14

代码语言:javascript
复制
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `car_count`()
BEGIN
SELECT `car`, count(*) FROM `cars` JOIN `users` ON FIND_IN_SET(car,REPLACE(car_owned,' ',''))>0
GROUP BY car
END $$
DELIMITER ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27187748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档