如何显示两个表的信息? INNER JOIN

时间:2017-04-19 21:15:39

标签: c# mysql windows inner-join

我正在使用C#和MYSQL开发一个Windows应用程序。 但我有一个疑问,我需要从不同的表中显示不同的东西(内部联接我是supose).. 我有一个名为tbl_horas的表,在这个表中我节省了不同的时间,例如:

IdHora | Hora | Meta.
1      | 7:30 | 40
2      | 8:30 | 20
3      | 9:30 | 40
4      | 10:30| 40

我还有另一个名为Products的表,在这个表中我保存了这样的信息:

IdProduct | Hour | Description | ActualDate
1         | 7:30 | Product one | 2017-04-19
2         | 8:30 | Product two | 2017-04-19
3         | 9:30 | Prod  three | 2017-04-19

问题是,我怎样才能显示这样的信息?

Hora (From tbl_horas) | Meta (from tbl_horas) | Description (from tbl_products) | Cantidad (from tbl_productos)<- This gonna ve a count for all products that have the hour 7:30, or another..
7:30              | 40            | Product one                     | 20
8:30              | 20            | Product two         | 15

我有这个sql语句,但我不能这样做,这适用于我想要的东西..

SELECT 
  tbl_horas.Hora, 
  tbl_horas.Meta, 
  tbl_horas.Turno, 
  Count(tbl_productos.Serial) 
FROM tbl_horas 
INNER JOIN tbl_reportes 
  on tbl_horas.IdHora = tbl_reportes.IdHora 
INNER JOIN tbl_productos 
  ON tbl_reportes.IdProducto = tbl_productos.IdProducto;

我要在gridview中显示这个,如果有几个小时没有产品,这将在Cantidad显示0 .. 我很抱歉英语哈哈,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

要使用Count(),您需要使用“Group By”。

尝试添加:GROUP BY tbl.Hora到语句的末尾。

但请注意,通过对结果进行分组,您将失去某些列的含义。 要解决此问题,您可以尝试为计数列(like this)运行子查询。

答案 1 :(得分:0)

您可以使用count()获取group by,然后执行join

select th.hora, th.meta,
xx.description, xx.counthora
from tbl_horas th join (
select hora, description,
count(*) as counthora from products
group by hora) xx on th.hora = xx.hora;