多表联合相互查询输出

MySql 码拜 10年前 (2014-04-27) 836次浏览 0个评论
 

mysql 版本5.6.15
可以随意建立一个databse:test
一、建表:
表1:客户表
CREATE TABLE `customer` (  
  `customer_id` int(11) NOT NULL  
  `name` varchar(20) NOT NULL,  


表2:客户维护内容表
CREATE TABLE `customer_cares` (  
  `cares_id` int(11) NOT NULL,  
  `customer_id` int(11)NOT NULL, 
`owner_role_id` int(11)NOT NULL, 
`creator_role__id` int(11)NOT NULL,  
  `subject` varchar(20) NOT NULL, 


表3:员工角色表
CREATE TABLE `user` (  
  `user_id` int(11) NOT NULL,  
  `role_id` int(11)NOT NULL, 
  `name` varchar(20) NOT NULL, 


二、插入数据:
1、INSERT INTO customer (customer_id,name) VALUES(5,tom);
       中文字段名:客户序列号-客户姓名
2、INSERT INTO user  (user_id,role_id,name) VALUES(1,1,admin)
       INSERT INTO user  (user_id,role_id,name) VALUES(2,2,staff)
         中文字段名:员工序列号-角色序列号-角色名
3、INSERT INTO customer_cares  (cares_id,customer_id,owner_role_id,creator_role_id,subject) VALUES(1,5,2,1,test)
     中文字段名:维护序列号-客户序列号-负责人角色序列号-创建人角色序列号-内容
     其中owner_role_id/creator_role_id均等同于user表中的role_id
三、查询要求:
查询出客户姓名、客户维护的内容、维护内容的负责人(角色名)、维护内容的创建人(角色名)
例子中的查询结果应该是:
tom-test-staff-admin

谢谢各位大神了
每个字段的ID没有在这里设置为主键是为了大家插入的时候方便,生产环境中每个表的第一个ID字段都是主键,并且子增长

100分
mysql> select * from customer;
+————-+——+
| customer_id | name |
+————-+——+
|           5 | tom  |
+————-+——+
1 row in set (0.00 sec)

mysql> select * from customer_cares;
+———-+————-+—————+——————+———+
| cares_id | customer_id | owner_role_id | creator_role__id | subject |
+———-+————-+—————+——————+———+
|        1 |           5 |             2 |                1 | test    |
+———-+————-+—————+——————+———+
1 row in set (0.00 sec)

mysql> select * from user;
+———+———+——-+
| user_id | role_id | name  |
+———+———+——-+
|       1 |       1 | admin |
|       2 |       2 | staff |
+———+———+——-+
2 rows in set (0.00 sec)

mysql> select (select name from customer where customer_id=t.customer_id) as c,
    ->  subject,
    ->  (select name from user where role_id=t.owner_role_id) as o,
    ->  (select name from user where role_id=t.creator_role__id) as cr
    ->  from customer_cares t;
+——+———+——-+——-+
| c    | subject | o     | cr    |
+——+———+——-+——-+
| tom  | test    | staff | admin |
+——+———+——-+——-+
1 row in set (0.00 sec)

mysql>


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多表联合相互查询输出
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!