【问题标题】:Show new field from count result in other table在其他表中显示计数结果中的新字段
【发布时间】:2014-03-05 03:08:47
【问题描述】:

我在查询中有问题。我想显示一个包含其他表计数结果的字段。很难解释,但我希望你能帮助我。
所以我想要的结果是:

select id, name, car from tbl_people,tbl_vehicle

'car'字段是vehicle表中count(vehicle)的结果,该表中的字段是id和vehicle。车辆字段包含(前)汽车、自行车、摩托车、(任何其他车辆) 我想要的结果是:

id | name  |  car  
-----------------
01 | john  |  3 (example)

感谢您的关注

【问题讨论】:

  • 请显示您想要的结果的示例数据。
  • 我有,只是说,两张桌子,人和车。亲自填写 ID 和姓名等字段。在车辆中,如 id、vehicle_name。包含 ex 的车辆名称:汽车、自行车、(其他车辆)。我想要我在我的问题上得出的结果,比如表格。你能帮帮我吗?
  • 这两个表之间没有任何联系,所以有点难以理解您想要计数的内容。

标签: sql


【解决方案1】:

通常你会得到一个子查询。不确定您的 ID,但类似:

select p.id, p.name, p.cnt 
from tbl_people p
inner join
   (select personid, count(1) as Cnt
   from tbl_vehicle
   where vehicle_name = 'Car'
   group by personid) v
on v.personid = p.id
order by p.name

【讨论】:

  • 其他车辆也算吗?我只需要计算一个特定的字段。如果我添加 where vehicle_name='car' 怎么办?我可以把它放在哪里?
  • @RezaKahfi 查看编辑,我补充说: where vehicle_name = 'Car'
【解决方案2】:

你也可以试试这个:

select t1.id, t1.DeptID, count(t2.DeptId) as count 
from t1 join t2 on t1.DeptID=t2.DeptId group by t2.DeptId;

用相应的表名替换 t1 和 t2,用适当的列名替换列。如果你想要一个 where 子句,你可以在 group by 子句之前添加它:

select t1.id, t1.DeptID, count(t2.DeptId) as count 
from t1 join t2 on t1.DeptID=t2.DeptId and t2.Name like '%a%'
group by t2.DeptId;

工作小提琴here

提示:设 t1 为 tbl_people,t2 为 tbl_vehicle。连接将在 id 上,并且 count(t2.DeptId) 可以替换为 tbl_vehicle.ID(如果重复或 tbl_vehicle.pId),并且 t2.Name 可以替换为 tbl_vehicle.Name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多