COUNT有多个表查询,我必须显示COUNT个结果

时间:2016-10-05 10:25:25

标签: mysql sql

我该如何解决这个问题?我的查询都没有,我已经尝试过了。

我必须返回两位医生的详细信息,他们下令进行最多的分析,包括他们订购的分析数量。句子的最后一部分真的让我发疯了。

为了合作,我有两张桌子:

            conn.CreateTable<table_sessions>();

                using (var conn = sql.conn())
                {
                    conn.Insert(new table_sessions()
                    {
                        sessionid = someVariable,
                        created = DateTime.Now,
                    });
                }

我试过了:

identifier ::=  (letter|"_") (letter | digit | "_")*
letter     ::=  lowercase | uppercase
lowercase  ::=  "a"..."z"
uppercase  ::=  "A"..."Z"
digit      ::=  "0"..."9"

那:

class Node:
    ...
    def _get_child_candidates(self, ...):
        ...

那:

mysql> select * from DOCTORES;
+-----------+---------------------------+--------------+-----------+
| DNI_DOC   | NOMBRE_DOC                | ESPECIALIDAD | TELEFONO  |
+-----------+---------------------------+--------------+-----------+
| 22888444O | MATEO DÍAZ, RAMÓN         |            3 | 659876457 |
| 22909456Y | HERAS PRADO, ANTONIA      |            1 | 676234598 |
| 23456398F | GÓMEZ DAVID, ADRIÁN       |            1 | 646768454 |
| 25349857H | BURGOS CASA, CANDY        |            2 | 659758476 |
| 55776898K | RAMÓN CORONADO,LUIS       |            3 | 654364736 |
| 78988484B | CONRADO ALONSO, JOSE      |            2 | 645878745 |
| 88647389P | DOMÍNGUEZ GÓMEZ, MANUEL   |            1 | 623787343 |
+-----------+---------------------------+--------------+-----------+

当你说这是一个简单的查询时,你甚至无法想象这是多么令人沮丧...为什么对我来说这不简单是一个谜(假设我真的不是假人)。

预期输出将是这样的:

mysql> select * from PETICIONES;
+--------+------------+--------+-----------+-----------+
| ID_PET | FECHA_PET  | ID_ANA | DNI_PAC   | DNI_DOC   |
+--------+------------+--------+-----------+-----------+
|      1 | 2008-01-03 |      2 | 71515623A | 23456398F |
|      2 | 2008-05-10 |      2 | 33788976F | 55776898K |
|      3 | 2008-05-08 |      3 | 79876867X | 23456398F |
|      4 | 2008-05-11 |      4 | 44787345H | 55776898K |
|      5 | 2008-05-12 |      2 | 19887234W | 25349857H |
|      6 | 2008-05-05 |      4 | 22897576R | 55776898K |
|      7 | 2008-03-15 |      5 | 44787345H | 88647389P |
|      8 | 2008-03-19 |      1 | 71515623A | 23456398F |
|      9 | 2008-03-26 |      2 | 71515623A | 78988484B |
|     10 | 2008-03-15 |      2 | 19887234W | 88647389P |
|     11 | 2008-03-15 |      3 | 33788976F | 55776898K |
|     12 | 2008-03-26 |      2 | 44787345H | 23456398F |
+--------+------------+--------+-----------+-----------+

2 个答案:

答案 0 :(得分:2)

我相信你严重过于复杂。加入DNI_DOC字段上的2个表,按医生的ID和名称(以及您可能希望包含在选择列表中的任何其他详细信息)进行分组,并计算不同ID_ANA的数量。

SELECT d.DNI_DOC, d.NOMBRE_DOC, COUNT(distinct ID_ANA) AS count
FROM DOCTORES d
INNER JOIN PETICIONES t ON d.DNI_DOC=t.DNI_DOC
GROUP BY d.DNI_DOC, d.NOMBRE_DOC
ORDER BY COUNT(distinct ID_ANA) DESC
LIMIT 2

如果您需要每位医生的peticiones总数,请将其与计数区分开来。

答案 1 :(得分:1)

以下是我要做的事情:

select d.*, count(p.ID_PET) as TOTAL_PETICIONES from DOCTORES d
    inner join PETICIONES p on p.DNI_DOC = d.DNI_DOC
    group by d.DNI_DOC
    order by count(ID_ANA) DESC
    limit 2

这是没有经过测试并写在这里所以请纠正我的拼写错误;) 使用连接将提供良好的输出。由DOCTORES分组,以便能够计算每个DOCTIORES的PETICIONES

编辑:类似的东西。输出不会很好,因为我有理解列内容的问题。