SQL内部连接表

时间:2014-05-12 01:55:01

标签: mysql sql database

我对我的SQL查询有一点疑问。我从descriçao表中选择dtinicampcab_doc,从quantidade选择id_establin_doc,然后我加入信息。但这并没有按照我想要的方式向我显示数据。

我的查询:

SELECT descricao, dt_ini_camp, quantidade, id_estab
  FROM cab_doc INNER JOIN lin_doc ON cab_doc.id = lin_doc.id_cab_doc

输出:

xxxxx 12-05-14  1000  01 
xxxxx 12-05-14  1222  03

我想要实现的目标:

xxxxx 12-05-12  1000  01
                1222  03

这可能吗?

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT descricao, dt_ini_camp, quantidade
  FROM cab_doc INNER JOIN lin_doc ON cab_doc.id=lin_doc.id_cab_doc
 GROUP BY ROLLUP(descricao, dt_ini_camp)

你必须放弃id列或以其他方式带来...

Google“按汇总分组”,如果我错了,请更正语法。

这些可能对您有用:

答案 1 :(得分:0)

您应该在应用程序层中进行此类操作,而不是在数据库中。原因是结果集实际上不是SQL结果集,因为列缺少值。例如,突然之间,结果集的顺序很重要。

可以这样做。在MySQL中,最简单的方法是使用变量:

SELECT if(@d = descricao and @dt = dt_ini_camp, '', descricao) as descricao,
       if(@d = descricao and @dt = dt_ini_camp, '', dt_ini_camp) as dt_ini_camp,
       quantidade, id_estab,
       @d := descricao,  @dt := dt_ini_camp
FROM cab_doc INNER JOIN
     lin_doc
     ON cab_doc.id = lin_doc.id_cab_doc CROSS JOIN
     (select @d := '', @dt := '') const
ORDER BY descricao, dt_ini_camp, quantidade, id_estab;