如何在 SQL 服务器中连接多个表?
How do I join multiple tables in SQL Server?
我是 SQL 联接的新手,发现很难在逻辑上联接两个以上的 table。我有一个 table 叫 PastExperience
PastExperience(id,eembossline,embossname,pastexperience,insertiondate,userid,dateofstay)
我将与我的 Users
table 一起使用 UserID
映射两个 tables
Users(UserName,MerchantID,Userid)
为了实现这一点,我编写了以下查询,效果很好
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',PE.embossname 'EmbossName', PE.pastexperience,U.UserName from PastExperience PE
inner join Users U
on U.UserId=PE.userid
where embossline='3100041810000001'
现在我正在尝试和挣扎的是,我想在特定的 EmbossLine
上从我的商家 table select MerchantName1
Merchant(MerchantID,MerchantName1)
EmbossLine
与 MerchantID
可以映射自 card
table
Card(MerchantID,EmbossLine,EmbossName)
如何加入这些多个 table?
我试过类似的东西,但我的语法是错误的
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
C.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join Card C on C.MerchantID = Merchant.MerchantID
where PE.embossline='3100041810000001'
试试这个:
Select Convert(char(10),PE.dateofstay,103) 'Date of Stay',
PE.embossname 'EmbossName',
PE.pastexperience,
U.UserName,
M.MerchantName1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join Cards C on (PE.EmbossLine = C.EmbossLine)
inner join Merchant M on(U.MerchantId = M.MerchantId AND C.MerchantID = Merchant.MerchantID)
where embossline='3100041810000001'
注意#1:代码直接写在这里,可能会有一些错误。
注意#2:我已经将转换的目标数据类型从 varchar(50) 更改为 char(10),字符串转换函数将始终 return 固定长度细绳。
使用此代码:
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
PE.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join merchant m on m.merchantid=u.merchantid
inner join card C on m.merchantid=C.merchantid and PE.EmbossLine = C.EmbossLine
where embossline='3100041810000001'
我想出了如何获得想要的结果。这是我的查询
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
C.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from card C
inner join PastExperience PE on c.EmbossLine=PE.embossline
inner join Users U on U.UserId=PE.userid
inner join Merchant M on M.MerchantID=C.MerchantID
where PE.embossline='0093000110000001'
我是 SQL 联接的新手,发现很难在逻辑上联接两个以上的 table。我有一个 table 叫 PastExperience
PastExperience(id,eembossline,embossname,pastexperience,insertiondate,userid,dateofstay)
我将与我的 Users
table 一起使用 UserID
映射两个 tables
Users(UserName,MerchantID,Userid)
为了实现这一点,我编写了以下查询,效果很好
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',PE.embossname 'EmbossName', PE.pastexperience,U.UserName from PastExperience PE
inner join Users U
on U.UserId=PE.userid
where embossline='3100041810000001'
现在我正在尝试和挣扎的是,我想在特定的 EmbossLine
Merchant(MerchantID,MerchantName1)
EmbossLine
与 MerchantID
可以映射自 card
table
Card(MerchantID,EmbossLine,EmbossName)
如何加入这些多个 table? 我试过类似的东西,但我的语法是错误的
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
C.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join Card C on C.MerchantID = Merchant.MerchantID
where PE.embossline='3100041810000001'
试试这个:
Select Convert(char(10),PE.dateofstay,103) 'Date of Stay',
PE.embossname 'EmbossName',
PE.pastexperience,
U.UserName,
M.MerchantName1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join Cards C on (PE.EmbossLine = C.EmbossLine)
inner join Merchant M on(U.MerchantId = M.MerchantId AND C.MerchantID = Merchant.MerchantID)
where embossline='3100041810000001'
注意#1:代码直接写在这里,可能会有一些错误。
注意#2:我已经将转换的目标数据类型从 varchar(50) 更改为 char(10),字符串转换函数将始终 return 固定长度细绳。
使用此代码:
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
PE.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from PastExperience PE
inner join Users U on U.UserId=PE.userid
inner join merchant m on m.merchantid=u.merchantid
inner join card C on m.merchantid=C.merchantid and PE.EmbossLine = C.EmbossLine
where embossline='3100041810000001'
我想出了如何获得想要的结果。这是我的查询
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
C.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from card C
inner join PastExperience PE on c.EmbossLine=PE.embossline
inner join Users U on U.UserId=PE.userid
inner join Merchant M on M.MerchantID=C.MerchantID
where PE.embossline='0093000110000001'