我有4个mysql表,其中包含相互关联的数据
我正在尝试检索玩家的预订,请记住,有些房间可能有2个同伴而有些房间不会
MYSQL表物理设计以这种方式构建
playersTable
ParticipTable
hotelsTable
预订
我要做的是SELECT
所有预订,并将它们列在一个表中,它可以显示两个玩家,1号和2号。
我正在使用此查询来获得结果:
SELECT bookingsTable.*, playersTable.*, participantsTable.*, hotelsTable.*
FROM bookingsTable
LEFT JOIN participationTable
ON bookings.player1_id= participants.p_id
LEFT JOIN playersTable ON participants.playerID = players.playerID
LEFT JOIN hotelsTable ON bookings.hotelId = hotels.hotelId
我只有一个玩家,所以我添加了我添加了另一个选择player2_id
的查询但是当循环结果时,我无法让它正常工作,但我可以得到player2_id号而不是这个名字。
这是我的PHP代码,它加载结果,总是赞赏一种帮助。
<?php do { ?>
<tr>
<td><?php echo $row_booking_retrival['id']; ?></td>
<td><?php echo $row_booking_retrival['playerFullname']; ?></td>
<td><?php echo $row_booking_retrival['playerFullname']; ?></td>
<td><?php echo $row_booking_retrival['hotelName']; ?></td>
<td><?php echo $row_booking_retrival['arrivalDate']; ?></td>
<td><?php echo $row_booking_retrival['arrivalTime']; ?></td>
<td><?php echo $row_booking_retrival['departureDate']; ?></td>
<td><?php echo $row_booking_retrival['departureTime']; ?></td>
<td><?php echo $row_booking_retrival['Notes']; ?></td>
</tr>
<?php } while ($row_booking_retrival = mysql_fetch_assoc($booking_retrival)); ?>
提前致谢。
在此链接中查找物理设计和预期结果。
答案 0 :(得分:0)
根据您的图片数据和图片中的预期结果,您正在寻找像
这样的查询SELECT
b.b_id as BookingID,
p1.fullname as player1full,
p2.fullname as player2full,
h.hotelName as hotelname,
b.arrival as arrivalDate
FROM
bookingsTable b
LEFT JOIN
participationTable pT1 ON b.player1 = pT1.p_id
LEFT JOIN
participationTable pT2 ON b.player2 = pT2.p_id
LEFT JOIN
playersTable p1 ON pT1.playerID = p1.playerID
LEFT JOIN
playersTable p2 ON pT2.playerID = p2.playerID
LEFT JOIN
hotelsTable h ON b.hotelid = h.hotelId
然后返回结果 -
SQL小提琴 - http://sqlfiddle.com/#!2/68cd27/2