多个列的Mysql计数?

多个列的Mysql计数?,mysql,count,subquery,Mysql,Count,Subquery,我有以下简化表格: statistics +-------------+-------------+---------------+ | type | itemnumber | borrowernumber | +-------------+-------------+---------------+ | issue | 26191 | 11978 | +-------------+-------------+---------

我有以下简化表格:

  statistics
 +-------------+-------------+---------------+
 | type        | itemnumber | borrowernumber |
 +-------------+-------------+---------------+
 | issue       | 26191       | 11978         |
 +-------------+-------------+---------------+
 | issue       | 26190       | 11979         |
 +-------------+-------------+---------------+


items:
 +-------------+-------------+
 | itemnumber  | bibliono    |
 +-------------+-------------+
 | 26191       | 27          |
 +-------------+-------------+
 | 26190       | 28          |
 +-------------+-------------+


biblio_metadata:
 +-------------+----------------------------------------------------+
 | bibliono    | metadata                                           |
 +-------------+----------------------------------------------------+
 | 27          | <?xml.. <datafield tag="082" ind1="0" ind2="4">    |
 |                        <subfield code="a">005.133/M29</subfield> |
 |                         </datafield>                             |                                                      
 +-------------+----------------------------------------------------+
 | 28          | <?xml.. <datafield tag="082" ind1="0" ind2="4">    |
 |                        <subfield code="a">995.133/M29</subfield> |
 |                         </datafield>                             |                                                      
 +-------------+----------------------------------------------------+

  borrowers
 +-------------+-------------+
 | borrowerno  | sort1       |
 +-------------+-------------+
 | 11978       | CAS         |
 +-------------+-------------+
 | 11979       | CBA         |
 +-------------+-------------+
我试图找到正确的查询组合——如果是mysql,请选择查询多个列或任何其他关键字,但似乎无法找到正确的搜索词。 我创建了以下mysql查询,但无法通过第一列“CAS”进一步查询其他sort1(在本例中为CBA)


我正在研究这个问题,但我不知道下一个查询应该放在哪里,或者我试图得到的结果是否与前面提到的链接有关。“提前感谢”

在您的查询中,您似乎筛选出了
借款人所在的所有条目。sort1=“CAS”
,但如果我理解正确,您将需要这些条目

难道你不能按照你的问题中的说明进行所有的连接,然后使用两个case语句吗?由于您似乎对每个主题的计数(*)感兴趣,因此可以将它们相加

或许可以尝试以下方式:

SELECT 
CASE
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[0]{1}[0-9]{2}[^0-9]+.*' THEN "000-099"
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[9]{1}[0-9]{2}[^0-9]+.*' THEN "900-999"
ELSE "Others" 
END as "DDC Range", count(borrowers.sort1),
sum(case when borrowers.sort1="CAS" then 1 else '' end) as 'CAS',
sum(case when borrowers.sort1="CBA" then 1 else '' end) as 'CBA'
from statistics s 
LEFT JOIN items on (s.itemnumber=items.itemnumber) 
LEFT JOIN biblio_metadata ON (items.biblionumber=biblio_metadata.biblionumber) 
LEFT JOIN borrowers on (s.borrowernumber=borrowers.borrowernumber) 
WHERE s.type = "issue"
GROUP BY Subjects

谢谢你。这似乎是我所需要的,但我必须首先用数据集验证它是否真的求和。一旦你的评论被证实,我们将投票表决。谢谢!:)谢谢mysql查询工作得很好。没有想到和的情况下函数组合。干杯
SELECT CASE
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[0]{1}[0-9]{2}[^0-9]+.*' THEN "000-099"
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[9]{1}[0-9]{2}[^0-9]+.*' THEN "900-999"
ELSE "Others" 
END as "DDC Range", count(borrowers.sort1) 
from statistics s 
LEFT JOIN items on (s.itemnumber=items.itemnumber) 
LEFT JOIN biblio_metadata ON (items.biblionumber=biblio_metadata.biblionumber) 
LEFT JOIN borrowers on (s.borrowernumber=borrowers.borrowernumber) 
WHERE s.type = "issue" 
AND borrowers.sort1="CAS" 
GROUP BY Subjects  
SELECT 
CASE
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[0]{1}[0-9]{2}[^0-9]+.*' THEN "000-099"
WHEN ExtractValue(metadata, '//datafield[@tag="082"]/subfield[@code="a"]') REGEXP '^[9]{1}[0-9]{2}[^0-9]+.*' THEN "900-999"
ELSE "Others" 
END as "DDC Range", count(borrowers.sort1),
sum(case when borrowers.sort1="CAS" then 1 else '' end) as 'CAS',
sum(case when borrowers.sort1="CBA" then 1 else '' end) as 'CBA'
from statistics s 
LEFT JOIN items on (s.itemnumber=items.itemnumber) 
LEFT JOIN biblio_metadata ON (items.biblionumber=biblio_metadata.biblionumber) 
LEFT JOIN borrowers on (s.borrowernumber=borrowers.borrowernumber) 
WHERE s.type = "issue"
GROUP BY Subjects