Sql 连接两个查询
第一次查询的结果是Sql 连接两个查询,sql,Sql,第一次查询的结果是 select a.Enquiry_Id,a.Ckeck_In,a.check_Out,a.Hotel_Name,a.Meal_Plan,a.Room_Type,a.Occupancy_Type,a.Room_QT,a.Adults from Accomodation a where a.Enquiry_Id = 74 select q.Enquiry_Id,q.Start,q1.Stay_At from Quick_Plan q,Quick_Plan q1 where q
select a.Enquiry_Id,a.Ckeck_In,a.check_Out,a.Hotel_Name,a.Meal_Plan,a.Room_Type,a.Occupancy_Type,a.Room_QT,a.Adults from Accomodation a
where a.Enquiry_Id = 74
select q.Enquiry_Id,q.Start,q1.Stay_At from Quick_Plan q,Quick_Plan q1 where q.Enquiry_Id = 74 and q1.Enquiry_Id = 74 and q.Stay_At = q1.Start
第二次查询的结果是
74 2013-08-03 2013-08-04 ADS CP deluxe Double 1 2
我想结合这两个查询,得到如下结果
74 Ahmedabad Agra
在您的情况下,最简单的方法是使用CTE,因为它们不需要太多修改
74 2013-08-03 2013-08-04 ADS CP deluxe Double 1 2 Ahmedabad Agra
我认为正确的方法是:
;WITH FirstCTE AS
(
SELECT a.Enquiry_Id,
a.Ckeck_In,
a.check_Out,
a.Hotel_Name,
a.Meal_Plan,
a.Room_Type,
a.Occupancy_Type,
a.Room_QT,
a.Adults
FROM Accomodation a
WHERE a.Enquiry_Id = 74
),
SecondCTE AS
(
SELECT q.Enquiry_Id,
q.Start,
q1.Stay_At
FROM Quick_Plan q,
Quick_Plan q1
WHERE q.Enquiry_Id = 74
and q1.Enquiry_Id = 74
and q.Stay_At = q1.Start
)
SELECT *
FROM FirstCTE F
JOIN SecondCTE S
ON F.Enquiry_Id = S.Enquiry_Id
假设a.inquiry\u Id和q.inquiry\u Id是您加入的密钥
SELECT a.Enquiry_Id,
a.Ckeck_In,
a.check_Out,
a.Hotel_Name,
a.Meal_Plan,
a.Room_Type,
a.Occupancy_Type,
a.Room_QT,
a.Adults ,
q.Start,
q1.Stay_At
FROM Accomodation a
JOIN Quick_Plan q
ON a.Enquiry_Id = q.Enquiry_Id
JOIN Quick_Plan q1
ON q.Enquiry_Id = q1.Enquiry_Id
and q.Stay_At = q1.Start
WHERE a.Enquiry_Id = 74
试试这个我可能累了;所需结果与第一个选择结果之间有什么区别?@u07ch第二个选择结果返回的两个额外字段。如果三个答案中的任何一个都没有得到正确的结果,请建议进行其他查询。所有这些查询都像交叉连接一样处理我的数据。问题是,我不太理解你的第二个查询。起初我以为这是Quick_Plan表上的某种自联接,但后来我注意到您使用了查询Id,我认为它是您的主键,这对我来说毫无意义。那么,你能提供一些关于数据库数据的更多信息吗?提供两个表的查询信息将非常好…我有两个表,第一个是quickplan,另一个是住宿quickplan表包含有关旅游的信息,如checkindate checkout day tour strat,从stayat places的旅游终点开始,住宿包含有关人员住宿的酒店的信息,我必须创建一张凭证,其中我需要住宿表中的一些信息和quickplan中的一些信息quickplan中的信息通过在quickplan表中应用selfjoin来检索quickplan中的信息现在我想加入这两个查询。如果仍然需要了解prblm,我可以给你两个表的结构数据RH-02/09/2013-4 2013-09-10 2013-09-11阿巴德机场酒店地图请选择请选择1 2 RH-02/09/2013-4 2013-09-11 2013-09-12 Devinshare CP DELUX Single 12我猜这两行来自住宿表,是真的吗?首先,我建议您不要保存,当您的值未定义时,请选择作为值。像NULL,甚至0这样的东西会更好。其次,将诸如RoomType之类的枚举类型保存为字符串是不正确的。最好将它们保存为整数,然后使用映射表进行转换。例如,0=单人房,1=双人房,3=豪华房等。
SELECT a.Enquiry_Id, a.Ckeck_In, a.check_Out, a.Hotel_Name, a.Meal_Plan, a.Room_Type, a.Occupancy_Type, a.Room_QT, a.Adults,q.Start, q1.Stay_At
FROM Accomodation a
INNER JOIN Quick_Plan q ON a.Enquiry_Id = q.Enquiry_Id
INNER JOIN Quick_Plan q1 ON q1.Enquiry_Id = q.Enquiry_Id
WHERE a.Enquiry_Id = 74 AND
q.Stay_At = q1.Start
select
a.Enquiry_Id,
a.Ckeck_In,
a.check_Out,
a.Hotel_Name,
a.Meal_Plan,
a.Room_Type,
a.Occupancy_Type,
a.Room_QT,
a.Adults,
q.Enquiry_Id,
q.Start,
q1.Stay_At
from
Accomodation a,
Quick_Plan q,
Quick_Plan q1
where
q.Enquiry_Id = 74
and q1.Enquiry_Id = 74
and q.Stay_At = q1.Start
and a.Enquiry_Id = 74