我有几个表,怎样写多表联合查询的SQL语句

时间:2022-02-10 11:12:44
表一:DepartmentItem
字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
ID           Int                 Y   N
ArchitectureID   Varchar(40) N         编号
ItemID           uniqueidentifier N     关联 Item 表
IndexID           Smallint       该部门排序ID

表二:Architecture
字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
 ID                archar(40)
 Name 
              Varchar(50)
表三:Item
字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
ID               uniqueidentifier
Name               varchar(20)
怎样查出DepartmentItem的ID,DepartmentItem的IndexID和Architecture的name,和Item的name
各位帮忙解决哈

20 个解决方案

#1


好乱啊,这样多美好

//表一:DepartmentItem
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                Int              Y       N
  ArchitectureID    Varchar(40)      N                   编号
  ItemID            uniqueidentifier N                   关联 Item 表
  IndexID           Smallint                             该部门排序ID

//表二:Architecture
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                archar(40)
  Name              Varchar(50)

//表三:Item
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                uniqueidentifier
  Name              varchar(20)

#2


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID

这个你试下

#3


引用 2 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID

这个你试下

你表1,2,3里面的ID的字符型怎么都不一样啊,这样用Left Join可能会报错...

#4


Quote: 引用 3 楼 u012804018 的回复:

Quote: 引用 2 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID
  
恩恩,就是的类型不一样,结果报错

#5


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

#6


我有几个表,怎样写多表联合查询的SQL语句
引用 5 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

#7


引用 6 楼 u012878071 的回复:
我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

你用的是SQLServer???
http://www.w3school.com.cn/sql/sql_select.asp
自己学下SQL语句看看...

#8


冲你头像随手给你写的,都是些基本的
select DepartmentItem.ID,DepartmentItem.IndexID,Architecture.Name,Item.Name from DepartmentItem,Architecture,Item where DepartmentItem.ArchitectureID=Architecture.ID and DepartmentItem.ItemID=Item.ID;

#9


引用 8 楼 u011130289 的回复:
冲你头像随手给你写的,都是些基本的
select DepartmentItem.ID,DepartmentItem.IndexID,Architecture.Name,Item.Name from DepartmentItem,Architecture,Item where DepartmentItem.ArchitectureID=Architecture.ID and DepartmentItem.ItemID=Item.ID;

 我试了一下,关键是ID类型不一样啊

#10


引用 7 楼 u012804018 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

你用的是SQLServer???
http://www.w3school.com.cn/sql/sql_select.asp
自己学下SQL语句看看...

很感谢你,

#11


引用 6 楼 u012878071 的回复:
我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

#12


引用 11 楼 u012878071 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

select 
A.ID
A.IndexID
B.Name
C.Name

","呢?SQL基本语法  select a,b,c from Table

#13


引用 5 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

#14


引用 13 楼 a01589 的回复:
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

这个倒是,没有环境,也没特别注意这个...
他用的是SQLServer和这个","应该没多大关系,楼主这点语法基础应该还是有的...

#15


引用 11 楼 u012878071 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

你找下SQLServer的字符串转换的函数...我用的是Oracle里面字符串转换就是to_char,SQLServer的不太清楚,自己百度下应该能找到...

#16


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

试试看

#17


引用 14 楼 u012804018 的回复:
Quote: 引用 13 楼 a01589 的回复:

Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

这个倒是,没有环境,也没特别注意这个...
他用的是SQLServer和这个","应该没多大关系,楼主这点语法基础应该还是有的...

目测楼主没有发现那东西,他的截图里面就是直接复制了你的SQL语句,报了这个错误,A.ID下面有个下划线,就是因为没用","分隔

#18


引用 16 楼 F546445693 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

试试看

别误导了,你们还是都把","加上吧,楼主都是直接复制进去执行的

#19


我有几个表,怎样写多表联合查询的SQL语句
确实是啊!
select 
A.ID,
A.IndexID,
B.Name,
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

#20


楼主这是要学习还是要交作业呢?

#1


好乱啊,这样多美好

//表一:DepartmentItem
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                Int              Y       N
  ArchitectureID    Varchar(40)      N                   编号
  ItemID            uniqueidentifier N                   关联 Item 表
  IndexID           Smallint                             该部门排序ID

//表二:Architecture
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                archar(40)
  Name              Varchar(50)

//表三:Item
//字段名称           数据类型(大小) 是否主键 是否为空 默认值 描述
  ID                uniqueidentifier
  Name              varchar(20)

#2


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID

这个你试下

#3


引用 2 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID

这个你试下

你表1,2,3里面的ID的字符型怎么都不一样啊,这样用Left Join可能会报错...

#4


Quote: 引用 3 楼 u012804018 的回复:

Quote: 引用 2 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on B.ID=A.ID
left join Item B on C.ID=A.ID
  
恩恩,就是的类型不一样,结果报错

#5


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

#6


我有几个表,怎样写多表联合查询的SQL语句
引用 5 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

#7


引用 6 楼 u012878071 的回复:
我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

你用的是SQLServer???
http://www.w3school.com.cn/sql/sql_select.asp
自己学下SQL语句看看...

#8


冲你头像随手给你写的,都是些基本的
select DepartmentItem.ID,DepartmentItem.IndexID,Architecture.Name,Item.Name from DepartmentItem,Architecture,Item where DepartmentItem.ArchitectureID=Architecture.ID and DepartmentItem.ItemID=Item.ID;

#9


引用 8 楼 u011130289 的回复:
冲你头像随手给你写的,都是些基本的
select DepartmentItem.ID,DepartmentItem.IndexID,Architecture.Name,Item.Name from DepartmentItem,Architecture,Item where DepartmentItem.ArchitectureID=Architecture.ID and DepartmentItem.ItemID=Item.ID;

 我试了一下,关键是ID类型不一样啊

#10


引用 7 楼 u012804018 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 

你用的是SQLServer???
http://www.w3school.com.cn/sql/sql_select.asp
自己学下SQL语句看看...

很感谢你,

#11


引用 6 楼 u012878071 的回复:
我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

#12


引用 11 楼 u012878071 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

select 
A.ID
A.IndexID
B.Name
C.Name

","呢?SQL基本语法  select a,b,c from Table

#13


引用 5 楼 u012804018 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

#14


引用 13 楼 a01589 的回复:
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

这个倒是,没有环境,也没特别注意这个...
他用的是SQLServer和这个","应该没多大关系,楼主这点语法基础应该还是有的...

#15


引用 11 楼 u012878071 的回复:
Quote: 引用 6 楼 u012878071 的回复:

我有几个表,怎样写多表联合查询的SQL语句
Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

测试了一下还是有问题,,
 


我测试时'to_char' 不是可以识别的 内置函数名称,是什么问题呢?

你找下SQLServer的字符串转换的函数...我用的是Oracle里面字符串转换就是to_char,SQLServer的不太清楚,自己百度下应该能找到...

#16


select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

试试看

#17


引用 14 楼 u012804018 的回复:
Quote: 引用 13 楼 a01589 的回复:

Quote: 引用 5 楼 u012804018 的回复:

select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on to_char(B.ID)=A.ID
left join Item C on to_char(C.ID)=A.ID
试下

你给人家写的SQL语句,列之间都没",",这个必然是错误的

这个倒是,没有环境,也没特别注意这个...
他用的是SQLServer和这个","应该没多大关系,楼主这点语法基础应该还是有的...

目测楼主没有发现那东西,他的截图里面就是直接复制了你的SQL语句,报了这个错误,A.ID下面有个下划线,就是因为没用","分隔

#18


引用 16 楼 F546445693 的回复:
select 
A.ID
A.IndexID
B.Name
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

试试看

别误导了,你们还是都把","加上吧,楼主都是直接复制进去执行的

#19


我有几个表,怎样写多表联合查询的SQL语句
确实是啊!
select 
A.ID,
A.IndexID,
B.Name,
C.Name
from DepartmentItem A
left join Architecture B on CAST(B.ID AS Varchar)=A.ArchitectureID
left join Item C on C.ID = A.ItemID

#20


楼主这是要学习还是要交作业呢?

#21