我可以从一个表中显示2个字段,还可以从另一个表中显示一个计数行

时间:2017-12-16 15:32:52

标签: mysql sql

基本上我想显示来自UserName的{​​{1}},UserEmail和来自td_users的相同UserEmail的行。我的表结构如下所示

表td_users

td_add_service

id是两个表的主键

我想显示像

这样的数据
id | UserName | UserEmail| 
------------------------------
1  | abdul   | abdul@gmail.com
------------------------------
2  | Rahim   | rahim@gmail.com
------------------------------
3  | Karim   | karim@gmail.com
------------------------------

table  td_add_service
    ---------------------------------------------------
id | serviceName |  serviceDeatails        | UserEmail| 
------------------------------------------------------
1  | Servi1      |   testserviceone        | abdul@gmail.com
--------------------------------------------------------------
2  | Servi11     | testserviceonev         | rahim@gmail.com
---------------------------------------------------------------
3  | Servi111    |  testserviceone1        | karim@gmail.com
---------------------------------------------------------------
4  | Servi111    |  testserviceone2        | karim@gmail.com
---------------------------------------------------------------

我可以从一个表中检索数据,也可以从两个表中检索数据但不能显示计数数据。

2 个答案:

答案 0 :(得分:1)

随时使用带有int参数的关系表 但是没有nchar例如你的表与电子邮件的关系 - 这是char列

create table #td_users
(id int not null identity(1,1),
 usename nchar(10),
 email nchar(20)
 )

 create table #td_add_service
(id int not null identity(1,1),
 serviceName nchar(10),
 serviceDeatails nchar(20),
 UserEmail nchar(20)
 )

 insert into #td_users(usename,email)
 values
 ('abdul','abdul@gmail.com'),
 ('Rahim ','rahim@gmail.com'),
 ('Karim ','karim@gmail.com');

 insert into #td_add_service(serviceName,serviceDeatails,UserEmail)
 values
 ('Servi1','testserviceone','abdul@gmail.com'),
('Servi11','testserviceonev','rahim@gmail.com'),
('Servi111','testserviceone1','karim@gmail.com'),
('Servi111','testserviceone2','karim@gmail.com');


select  tu.usename,
td.UserEmail,
count(td.serviceDeatails) [No of service] from #td_add_service td left join #td_users tu 
on td.UserEmail=tu.email
group by tu.usename,td.UserEmail order by 3


usename       UserEmail       No of service
abdul       abdul@gmail.com         1
Rahim       rahim@gmail.com         1
Karim       karim@gmail.com         2

答案 1 :(得分:0)

SELECT `td_users`.`UserName` AS Username, `td_users`.`UserEmail` AS UserMail, t2.countgroups AS NoOfServices FROM `td_users` LEFT OUTER JOIN (SELECT `id`,COUNT(*) AS countgroups FROM `td_add_service` GROUP BY `UserEmail`) t2 ON `td_users`.`id` = t2.`id`

我认为这就是你要求的。