如何修复我的View Query以获得我想要的结果?

时间:2015-11-17 11:17:46

标签: sql-server view

我在MSSQL View Query中遇到了一个问题,想要获得结果。我从多个Tables查询中选择数据的查询如下:

SELECT dbo.Customer.Code, dbo.Customer.Name, dbo.Customer.Mobile, dbo.Customer.Email, dbo.Customer.Adults, dbo.Customer.Kids, dbo.Customer.Days, dbo.Customer.PackageId, 
                      dbo.Packages.PackagesName, dbo.Customer.ArrivalCityId, ArrivalCity.Citys AS ArrivalCity, dbo.Customer.ArrivalTime, dbo.Customer.ArrivalDate, dbo.Customer.DepartureCityId, 
                      DepartureCity.Citys AS DepartureCity, dbo.Customer.DepartureTime, dbo.Customer.DepartureDate, dbo.Customer.GST, dbo.Customer.Discount, dbo.Customer.Profit, dbo.Customer.Advance, 
                      dbo.Customer.TotalPayment, dbo.ProvideHotel.CityId, HotelCity.Citys AS HotelCity, dbo.ProvideHotel.HotelId, dbo.Hotel.Hotels, dbo.ProvideHotel.RoomTypeId, 
                      HotelCategory.Name AS HotelCategory, dbo.ProvideTransport.PickCityId, PickCity.Citys AS PickCity, dbo.ProvideTransport.DropCityId, DropCity.Citys AS DropCity, dbo.ProvideTransport.TransportId, 
                      dbo.Transport.Transports, dbo.TourProgramme.DayId, DayCategory.Name AS NoOfDays, dbo.TourProgramme.FromCityId, FromCity.Citys AS FromCity, dbo.TourProgramme.ToCityId, 
                      ToCity.Citys AS ToCity, dbo.Customer.Id, dbo.TourProgramme.CustomerId, dbo.TourProgramme.Programme
FROM  dbo.Customer    INNER JOIN 
                      dbo.Packages ON dbo.Customer.PackageId = dbo.Packages.Id INNER JOIN
                      dbo.City AS ArrivalCity ON dbo.Customer.ArrivalCityId = ArrivalCity.Id INNER JOIN
                      dbo.City AS DepartureCity ON dbo.Customer.DepartureCityId = DepartureCity.Id INNER JOIN
                      dbo.ProvideHotel ON dbo.Customer.Id = dbo.ProvideHotel.CustomerId INNER JOIN
                      dbo.City AS HotelCity ON dbo.ProvideHotel.CityId = HotelCity.Id INNER JOIN
                      dbo.Hotel ON dbo.ProvideHotel.HotelId = dbo.Hotel.Id INNER JOIN
                      dbo.Category AS HotelCategory ON dbo.ProvideHotel.RoomTypeId = HotelCategory.Id INNER JOIN
                      dbo.ProvideTransport ON dbo.Customer.Id = dbo.ProvideTransport.CustomerId INNER JOIN
                      dbo.City AS PickCity ON dbo.ProvideTransport.PickCityId = PickCity.Id INNER JOIN
                      dbo.City AS DropCity ON dbo.ProvideTransport.DropCityId = DropCity.Id INNER JOIN
                      dbo.Transport ON dbo.ProvideTransport.TransportId = dbo.Transport.Id INNER JOIN
                      dbo.TourProgramme ON dbo.Customer.Id = dbo.TourProgramme.CustomerId AND dbo.Packages.Id = dbo.TourProgramme.PackagesId INNER JOIN
                      dbo.Category AS DayCategory ON dbo.TourProgramme.DayId = DayCategory.Id INNER JOIN
                      dbo.City AS FromCity ON dbo.TourProgramme.FromCityId = FromCity.Id INNER JOIN
                      dbo.City AS ToCity ON dbo.TourProgramme.ToCityId = ToCity.Id Where dbo.Customer.Id = '2' 

它在图像中给出了这样的结果 Query give result 我不想这样,我想要一次又一次地得到哪个值,应该停下来,并且在我用红色圆圈制作的旅行计划中给出单一价值。

1 个答案:

答案 0 :(得分:0)

我希望能够正确理解:使用DISTINCT

SELECT DISTINCT dbo.Customer.Code, dbo.Customer.Name, dbo.Customer.Mobile, dbo.Customer.Email, dbo.Customer.Adults, dbo.Customer.Kids, dbo.Customer.Days, dbo.Customer.PackageId, 
                      dbo.Packages.PackagesName, dbo.Customer.ArrivalCityId, ArrivalCity.Citys AS ArrivalCity, dbo.Customer.ArrivalTime, dbo.Customer.ArrivalDate, dbo.Customer.DepartureCityId, 
                      DepartureCity.Citys AS DepartureCity, dbo.Customer.DepartureTime, dbo.Customer.DepartureDate, dbo.Customer.GST, dbo.Customer.Discount, dbo.Customer.Profit, dbo.Customer.Advance, 
                      dbo.Customer.TotalPayment, dbo.ProvideHotel.CityId, HotelCity.Citys AS HotelCity, dbo.ProvideHotel.HotelId, dbo.Hotel.Hotels, dbo.ProvideHotel.RoomTypeId, 
                      HotelCategory.Name AS HotelCategory, dbo.ProvideTransport.PickCityId, PickCity.Citys AS PickCity, dbo.ProvideTransport.DropCityId, DropCity.Citys AS DropCity, dbo.ProvideTransport.TransportId, 
                      dbo.Transport.Transports, dbo.TourProgramme.DayId, DayCategory.Name AS NoOfDays, dbo.TourProgramme.FromCityId, FromCity.Citys AS FromCity, dbo.TourProgramme.ToCityId, 
                      ToCity.Citys AS ToCity, dbo.Customer.Id, dbo.TourProgramme.CustomerId, dbo.TourProgramme.Programme
FROM  dbo.Customer    INNER JOIN 
                      dbo.Packages ON dbo.Customer.PackageId = dbo.Packages.Id INNER JOIN
                      dbo.City AS ArrivalCity ON dbo.Customer.ArrivalCityId = ArrivalCity.Id INNER JOIN
                      dbo.City AS DepartureCity ON dbo.Customer.DepartureCityId = DepartureCity.Id INNER JOIN
                      dbo.ProvideHotel ON dbo.Customer.Id = dbo.ProvideHotel.CustomerId INNER JOIN
                      dbo.City AS HotelCity ON dbo.ProvideHotel.CityId = HotelCity.Id INNER JOIN
                      dbo.Hotel ON dbo.ProvideHotel.HotelId = dbo.Hotel.Id INNER JOIN
                      dbo.Category AS HotelCategory ON dbo.ProvideHotel.RoomTypeId = HotelCategory.Id INNER JOIN
                      dbo.ProvideTransport ON dbo.Customer.Id = dbo.ProvideTransport.CustomerId INNER JOIN
                      dbo.City AS PickCity ON dbo.ProvideTransport.PickCityId = PickCity.Id INNER JOIN
                      dbo.City AS DropCity ON dbo.ProvideTransport.DropCityId = DropCity.Id INNER JOIN
                      dbo.Transport ON dbo.ProvideTransport.TransportId = dbo.Transport.Id INNER JOIN
                      dbo.TourProgramme ON dbo.Customer.Id = dbo.TourProgramme.CustomerId AND dbo.Packages.Id = dbo.TourProgramme.PackagesId INNER JOIN
                      dbo.Category AS DayCategory ON dbo.TourProgramme.DayId = DayCategory.Id INNER JOIN
                      dbo.City AS FromCity ON dbo.TourProgramme.FromCityId = FromCity.Id INNER JOIN
                      dbo.City AS ToCity ON dbo.TourProgramme.ToCityId = ToCity.Id Where dbo.Customer.Id = '2'