根据list多对一查询

根据List里多个String 查对应的包含同样String的类
Sql

SELECT  meid id,mname NAME,COUNT(mname) spot, brand,spec FROM
          (SELECT p.id pid, m.id meid,c.id cid, p.`name` pname , m.`name` mname,  m.`brand`, m.`spec` FROM `pathology` p RIGHT JOIN `cure` c ON p.`id`=c.`pathology_id` LEFT JOIN `medicine`
              m ON c.`medicine_id`=m.`id` WHERE p.`name`='下火' UNION
           SELECT p.id pid, m.id meid,c.id cid, p.`name` pname , m.`name` mname , m.`brand`, m.`spec` FROM `pathology` p RIGHT JOIN `cure` c ON p.`id`=c.`pathology_id` LEFT JOIN `medicine`
              m ON c.`medicine_id`=m.`id` WHERE p.`name`='感冒'  )AS pmc GROUP BY mname ORDER BY spot DESC

union 等同where 字段 in(item1,item2)

 SELECT  meid id,mname NAME,COUNT(mname) spot, brand,spec FROM
  (SELECT p.id pid, m.id meid,c.id cid, p.`name` pname , m.`name` mname,  m.`brand`, m.`spec` FROM `pathology` p 
  RIGHT JOIN `cure` c ON p.`id`=c.`pathology_id` LEFT JOIN `medicine`
      m ON c.`medicine_id`=m.`id` WHERE p.`name` IN ('感冒','下火') )AS pmc GROUP BY mname ORDER BY spot DESC

mybatis /mapper.xml

 </resultMap>
  <select id="findPathlogy2Medicine" resultMap="BaseResultMap">
      SELECT  meid id,mname NAME, brand,spec ,COUNT(mname) spot FROM
          (SELECT p.id pid, m.id meid,c.id cid, p.`name` pname , m.`name` mname,  m.`brand`, m.`spec` FROM `pathology` p RIGHT JOIN `cure` c ON p.`id`=c.`pathology_id` LEFT JOIN `medicine`
              m ON c.`medicine_id`=m.`id` WHERE  p.`name` in
      <foreach collection="list" index="index" item="p" open="(" separator="," close=")">
          #{p}
      </foreach>
            )AS pmc GROUP BY mname ORDER BY spot DESC
  </select>

表/类
medicine

@Entity
@Data
public class Medicine {
    @Id
    private String id;
    private String name;
    private String brand;
    private String spec;
    private String spot;
}

Pathology

@Entity
@Data
public class Pathology {
    @Id
    private String id;
    private String name;
}

中间表cure

@Entity
@Data
public class Cure {
    @Id
    private String id;
    private String medicineId;
    private String pathologyId;

}

数据库查的
在这里插入图片描述
postman查的
{“data”:[{“id”:“1”,“name”:“板蓝根”,“brand”:“小蓝”,“spec”:“10”,“spot”:“2”},{“id”:“4”,“name”:“夏桑菊”,“brand”:“小夏”,“spec”:“10”,“spot”:“1”}],“code”:0,“message”:“success”}
关于postman传参List
json 原生格式[“item1”,"item2]

发布了11 篇原创文章 · 获赞 0 · 访问量 91

猜你喜欢

转载自blog.csdn.net/weixin_44805962/article/details/105142161