【问题标题】:mysql query with join clause and group by clause [closed]带有join子句和group by子句的mysql查询[关闭]
【发布时间】:2016-11-22 05:55:48
【问题描述】:

我想要这个结果

------------------------------------------------------
c_name    |  c_id   | email_count | number_count |
-----------------------------------------------------
course1   | cid1234 |    7        |7             |
course10  | cid7489 |    4        |4             |
course9   | cid0987 |    2        |2             |
course5   | cid2321 |    2        |2             |
course6   | cid8905 |    1        |1             |
course2   | cid2134 |    1        |1             |
course3   | cid4352 |    1        |1             |
course7   | cid9087 |    1        |1             |
course8   | cid6574 |    1        |1             |
course4   | cid1244 |    0        |0             |
---------------------------------------------------

但我得到这样的结果

------------------------------------------------------ -----------
c_name    |         c_id            | email_count | number_count |
-------------------------------------------------------------------
null      | cid1234                 |    7        |7             |
null      | cid7489                 |    4        |4             |
null      | cid0987,cid2321         |    2        |2             |
null      | cid8905,cid4352,cid6574 |    1        |1             |
null      | cid2134,cid9087         |    1        |1             |
null      | cid1244                 |    0        |0             |
------------------------------------------------------------------

我有两个数据库表名称为 (course_master)(search_course) 在一个表课程详细信息在那里,例如 1.) 课程名称为 (c_name) ,

2.) 课程 ID 为 (c_id) ,

在另外一张表里有三个库仑

1.) 课程 ID 为 (c_id) ,

2.)课程以 (c_eml) 的形式通过电子邮件发送,

3.) 在号码 (c_num) 上发送的课程,

first table name course_master 
--------------------------
s.no | c_name  | c_id    |
--------------------------
1.   | course1 | cid1234 |
2.   | course2 | cid2134 |
3.   | course3 | cid4352 |
4.   | course4 | cid1244 |
5.   | course5 | cid2321 |
6.   | course6 | cid8905 |
7.   | course7 | cid9087 |
8.   | course8 | cid6574 |
9.   | course9 | cid0987 |
10.  | course10| cid7489 |
--------------------------

第二个表名类似于 search_course

-----------------------------------------------
s.no.|   c_id  |     c_eml        |   c_num   |
-----------------------------------------------
1.   | cid8905 |example@host.com  | 9999999999|
2.   | cid7489 |  any email Id    | any number|
3.   | cid0987 | ------"--------  | -----"----|
4.   | cid1234 | ------"--------  | -----"----|
5.   | cid2134 | ------"--------  | -----"----|
6.   | cid4352 | ------"--------  | -----"----|
7.   | cid1234 | ------"--------  | -----"----|
8.   | cid1234 | ------"--------  | -----"----|
9.   | cid2321 | ------"--------  | -----"----|
10.  | cid2321 | ------"--------  | -----"----|
11.  | cid1234 | ------"--------  | -----"----|
12.  | cid9087 | ------"--------  | -----"----|
13.  | cid1234 | ------"--------  | -----"----|
14.  | cid1234 | ------"--------  | -----"----|
15.  | cid6574 | ------"--------  | -----"----|
16.  | cid1234 | ------"--------  | -----"----|
17.  | cid7489 | ------"--------  | -----"----|
18.  | cid0987 | ------"--------  | -----"----|
19.  | cid7489 | ------"--------  | -----"----|
20.  | cid7489 | ------"--------  | -----"----|

我尽我最大的努力,我什至尝试了很多连接查询,但 我认为课程 ID 像 eml_count = 1 一样分组,它们是该行中的 3 个课程 ID,我是无法得到我想要的结果(相应的课程名称).. 所以请任何人都可以尝试为此编写一个 mysql 查询,这对我有很大的帮助,在此先感谢..

【问题讨论】:

  • 同时提供你的 sql 查询
  • 到目前为止你做了什么
  • 请发布您为实现此目的而编写的查询。
  • 我尝试了很多差异查询,其中之一是 { SELECT B.c_name, A.c_id, COUNT(A.c_eml) AS email_count, COUNT(A.c_num) AS number_count FROM search_course A JOIN course_master B ON A.c_id=B.c_id GROUP BY B.c_name ORDER BY COUNT(A.c_eml) DESC, COUNT(A.c_num) DESC }
  • 你能检查我的答案吗..@A.Sharma

标签: php mysql sql-server


【解决方案1】:

我试过这样

select 
 c_name,A.c_id,
    count(c_eml) as 'ceml',COUNT(c_num) AS CNUMBER_COUNT
from #A(table 1) A
  left join #B(table_2)  B on
 A.c_id=B.c_id
group by
    c_name,A.c_id

【讨论】:

  • 不,先生,这是一个空的结果......
  • 你可以尝试左连接...@A.Sharma
  • 加入查询在加载过程中需要很长时间,请先生稍等,同时我也会在几分钟内告诉你结果
  • 好的继续..@A.Sharma
  • 先生左加入我得到 course_name C_id,但是我得到的 eamil 和数字的计数为 0 而不是任何数字
【解决方案2】:

这样试试……

select c_name,A.c_id,count(c_email) email_count,count(c_num)number_count A from course_master B 
inner join search_course on A.c_id=B.c_id group by B.c_id

【讨论】:

  • srry 但是如果你没有给表名liek course_master A 内部连接search_course B 加上后缀,那么这不起作用,,,
  • 哦..抱歉,我用后缀更新了答案..实际上我已经用一些演示数据进行了测试,我用表名替换了 tha 数据并忘记给表提供后缀
  • ji 您的查询将是这样的正确格式 SELECT c_name,A.c_id,count(c_email) AS email_count, count(c_num) AS number_count FROM course_master B inner Join search_course A on A.c_id= B.c_id 按 B.c_id 分组,但这也写为空结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多