【问题标题】:SQL many2many query [closed]SQL many2many查询[关闭]
【发布时间】:2015-12-18 19:28:25
【问题描述】:

我有 3 张桌子。

人员: ID 名字

LotT: ID 价格

PersonLotT: person_id lot_id

我想知道这样的信息: 迈克尔(他所有手数的总和,例如 300+400+500=1200) 亚历克斯 900 詹姆斯 500

我尝试进行不同的查询,但都错了。

【问题讨论】:

  • 当海报展示他们已经尝试过的东西时,人们往往会更认真地对待问题。
  • 您尝试了哪些查询,有什么问题?
  • 您尝试过哪些查询?如果您提供一些您所做工作的示例,我们可以通过专注于您错过的内容来帮助您更好地理解它。
  • SELECT p.name, sum(l.price) FROM PersonT as p, LotT as l, PersonLotT as pl where p.id = pl.person_id and l.id = pl.lot_id group by p .name 我试过这个,但我真的是 sql 的新手

标签: mysql sql select join many-to-many


【解决方案1】:

此查询对您的场景很有帮助

从 PersonLot 中选择 SUM(LotT.price) 作为 TotalPrice, PersonT.Name 在 PersonLot.personID=PersonT.personid 上加入 PersonT 内部加入 LotT on PersonLot.Lotid=LotT.id 按 PersonT.Name 分组

【讨论】:

    【解决方案2】:

    试试这个。

        select name, sum(price)
    from PersonLotT PL join LotT L on PL.lot_id = L.id
    join PersonT P on PL.person_id = P.id
    group by name;
    

    为探索 SQL Fidde 设置了一个 sql fiddle

    【讨论】:

    • 非常感谢。没错
    • 我很高兴 sql 对你有用。
    【解决方案3】:

    试试这个:

    select p.id, p.name, sum(t.price) as price
    from PersonLotT pl
    inner join PersonT p on pl.person_id = p.id
    inner join LotT l on pl.lot_id = l.id
    group by p.id, p.name;
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2021-08-15
      • 2010-09-06
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多