同一张表两字段对应另一张表同一字段的SQL视图怎么写

suxiuhai 2009-10-29 03:11:25
现有客户订单表一张(需要解决的字段:Customerid,Customerid2)
客户名称表一张(Customerid,Customername)

客户订单表中的那2个字段,对应客户名称表里的同一字段,想显示的时候都以它对应的Customername来显示
如:
客户订单表字段及其值: 客户名称表字段及其值: 想要显示的时候显示为:
Customerido Customerid2 Customerid Customername Customername1 Customername2

1 1 1 张一 张一 张一
2 2 2 李二 李二 李二
3 1 3 王三 王三 张一
4 1 4 赵四 赵四 张一
5 5 5 林五 林五 林五
6 5 6 陈六 陈六 林五

因为很多客户下的单,但开的发票却是它上一级公司,所以新添加了个字段“所属”:Customerid2
如客户王三下的单,但它开票的名称却要填写张一

视图如何建立?






...全文
334 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BBCCSDN 2011-08-31
  • 打赏
  • 举报
回复
就是select a.*,b.* from table1,table2 这样的,因为我还要关联其他几表
BBCCSDN 2011-08-31
  • 打赏
  • 举报
回复
不用join怎么写?
liuqing12 2010-09-16
  • 打赏
  • 举报
回复
kangkang
test12345678000 2009-11-09
  • 打赏
  • 举报
回复
我有类似的问题。
表a:product_type
+----------+----------+--------+---------------------+--------+---------------------+------+
| id | protype |inputtor| inputtime | confirm| confirmtime | notes|
+----------+----------+--------+---------------------+--------+---------------------+------+
| 100 | 男装 | 1 | 2009-10-28 11:00:00 | 1 | 2009-10-28 12:00:00 | NULL |
| 101 | 衬衫 | 2 | 2009-10-28 11:00:00 | 1 | 2009-10-28 12:00:00 | NULL |
| 102 | 牛仔裤 | 1 | 2009-10-28 11:00:00 | 2 | 2009-10-28 12:00:00 | NULL |
| 200 | 女装 | 1 | 2009-10-28 11:00:00 | 2 | 2009-10-28 12:00:00 | NULL |
| 300 | 男性配饰 | 2 | 2009-10-28 11:00:00 | 2 | 2009-10-28 12:00:00 | NULL |
| 400 | 女性配饰 | 2 | 2009-10-28 11:00:00 | 1 | 2009-10-28 12:00:00 | NULL |
+----------+----------+--------+---------------------+--------+---------------------+------+

表b:employee
+----------+----------+
| id | name |
+----------+----------+
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
+----------+----------+

输出结果:
+----------+----------+--------+---------------------+--------+---------------------+------+
| id | protype |inputtor| inputtime | confirm| confirmtime | notes|
+----------+----------+--------+---------------------+--------+---------------------+------+
| 100 | 男装 | 张三 | 2009-10-28 11:00:00 | 张三 | 2009-10-28 12:00:00 | NULL |
| 101 | 衬衫 | 李四 | 2009-10-28 11:00:00 | 张三 | 2009-10-28 12:00:00 | NULL |
| 102 | 牛仔裤 | 张三 | 2009-10-28 11:00:00 | 李四 | 2009-10-28 12:00:00 | NULL |
| 200 | 女装 | 张三 | 2009-10-28 11:00:00 | 李四 | 2009-10-28 12:00:00 | NULL |
| 300 | 男性配饰 | 张三 | 2009-10-28 11:00:00 | 李四 | 2009-10-28 12:00:00 | NULL |
| 400 | 女性配饰 | 李四 | 2009-10-28 11:00:00 | 张三 | 2009-10-28 12:00:00 | NULL |
+----------+----------+--------+---------------------+--------+---------------------+------+


我知道的有两个种方法可以实现。
方法一:
SELECT * FROM
(SELECT p.id,p.protype,e.name,p.inputtime FROM product_type AS p JOIN employee AS e ON p.inputtor=e.id) AS a
JOIN
(SELECT p.id,e.name,p.confirmtime,p.notes FROM product_type AS p JOIN employee AS e ON p.confirm=e.id) AS b
ON a.id=b.id;

方法二:
SELECT
id,protype,
(SELECT name FROM employee WHERE employee.id=product_type.inputtor),
inputtime,
(SELECT name FROM employee WHERE employee.id=product_type.confirm),
confirmtime,notes
FROM product_type;

两种方法测试后发现效率相差不大,为什么?
有没有更好的办法?
suxiuhai 2009-10-29
  • 打赏
  • 举报
回复
bancxc

(恐惧之狼)

呵呵,来迟了点~
bancxc 2009-10-29
  • 打赏
  • 举报
回复
留这给我吧
suxiuhai 2009-10-29
  • 打赏
  • 举报
回复
还有点分,一人20吧!
suxiuhai 2009-10-29
  • 打赏
  • 举报
回复
明白了,谢谢了~
lounddong 2009-10-29
  • 打赏
  • 举报
回复

create view v_add AS
select a.Customerid, a.Customername as Customername1 , b. Customername as Customername2

from table1 a, (select table2.Customerido,table1.Customername from table1,table2 where
table1.Customerid = table2.Customerid2) b
where a.Customerid = b.Customerido
华夏小卒 2009-10-29
  • 打赏
  • 举报
回复

create view vv
as
select Customername1=a.Customername ,Customername2=b.Customername
from 客户名称表 a,客户名称表 b,客户订单表 c
where a.Customerido=c.Customerid
and b.Customerid2=c.Customerid
--小F-- 2009-10-29
  • 打赏
  • 举报
回复
1楼的还要加个自增列 晕
--小F-- 2009-10-29
  • 打赏
  • 举报
回复
select 
*
from
(select a.Customerid,b.Customername from 客户订单表 a,客户名称表 b where a.Customerid=b.Customerid)a
left join
(select a.Customerid,b.Customername from 客户订单表 a,客户名称表 b where a.Customerid2=b.Customerid)b
on
...

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧