MYSQL,同时获得匹配和空数据

我有三个表 Table_1 : 车辆

id name
-------
1  Honda
2  Ferrari
3  wagon

表2:extra_details

ID        Detail
------------------------
1          GPS
2          CAMERA
3          Tracking System

表3:车辆的附加物

vehicle_id      extra_detail_id 
--------------------------
1                2
1                3
3                2

现在,一辆车可能有超过1个额外的东西,如GPS,跟踪系统等,所以我创建了1个extratable存储这些东西的车辆ID和extra_detail_id。 我想要所有车辆的数据,如果一些车辆有额外的细节,我用逗号隔开来显示,如果不是null的话 我的疑问

我的查询。

  SELECT v.* , GROUP_CONCAT(e.name SEPARATOR ', ') as additional_details FROM vehicles v 
  left join vehcile_extras ve on ve.vehicle_id = v.id
  left join extra_details e on FIND_IN_SET(ve.extra_detail_id, e.id)

结果类似..,

id     name     additional_details 
----------------------------------
1      Honda    CAMERA,Tracking System
3      wagon    CAMERA

我想这样

id     name     additional_details 
----------------------------------
1      Honda    CAMERA,Tracking System
2      Ferrari  null
3      wagon    CAMERA

我知道我可以实现这一点与UNION ALL ,但我想知道,如果有任何其他的技巧,以获得所有的数据没有工会?

解决方案:

可能是你需要一个适当的组由

  SELECT  v.id, v.name , GROUP_CONCAT(e.name SEPARATOR ', ') as additional_details 
  FROM vehicles v 
  left join vehcile_extras ve on ve.vehicle_id = v.id
  left join extra_details e on FIND_IN_SET(ve.extra_detail_id, e.id)
  GROUP BY  v.id, v.name 

或者也要避免FIND_IN_SET。

 SELECT v.id, v.name , GROUP_CONCAT(e.name SEPARATOR ', ') as additional_details 
 FROM vehicles v 
 left join vehcile_extras ve on ve.vehicle_id = v.id
 left join extra_details e on ve.extra_detail_id =  e.id
 GROUP BY  v.id, v.name 

给TA打赏
共{{data.count}}人
人已打赏
解决方案

TypeError: 图像数据不能被转换为浮点数/当导入.png图像时。

2022-5-12 8:00:16

解决方案

rails设计中的不允许参数,即使params .permit(ted)。

2022-5-12 8:00:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索