在SQL SERVER中将多对多列相关列选择到一列中?

时间:2013-05-29 09:36:30

标签: sql-server database tsql

我有以下带有SQL Server的数据库表

Booking(bookingID,customerName,branchID,RefNumber,...)

Trip(TripID,vehicleID,...)

BookingToTripMap(TripID,bookingID)

Branch(branchID, branchName)

Vehicle(vehicleID,vehicleNumber)

(预订,分行)和(旅程,车辆)之间存在一对一的关系,预订,旅行之间的多对多关系保存在表BookingToTripMap中。

现在我想提取一个返回以下内容的查询

Booking.RefNumber   Booking.CustomerName    Vehicle.VehicleNumber

(一个单元格中的所有车辆编号)

1 个答案:

答案 0 :(得分:0)

这是您的查询

SELECT B.RefNumber, B.CustomerName, V.VehicleNumber
FROM ((Booking AS B INNER JOIN BookingToTripMap AS BT
     ON B.bookingID = BT.bookingID) INNER JOIN TRIP as T
     ON T.TripID = BT.TripID) INNER JOIN Vehicle as V
     ON V.vehicleID = T.vehicleID

我会将字段bookingID添加到表Trip中,似乎表BookingToTripMap不会为您的数据库添加任何值。

此外,如果您的车辆编号是唯一的,您可以将Vehicle表中的主键更改为vehicleNumber,并更改Trip表中的相同列。因此,您可以直接从Trip表中检索vehicleNumber。

我只是根据给定的信息猜测。

此致