我想通过book_id连接5个表。我试过:
SELECT booked_room_info . * , booking_info . * , hotel_info.name as
hotelname,hotel_info.address as hoteladdress,hotel_info.contact as
hotelcontact , personal_info . *,room_registration.room_name as
roomname,room_registration.price as roomprice,room_registration.price as
roomprice,room_registration.description as
roomdescription,room_registration.image as roomimage
FROM booked_room_info
JOIN booking_info ON booking_info.booking_id = booked_room_info.booking_id
JOIN hotel_info ON hotel_info.id = booking_info.hotel_id
JOIN personal_info ON personal_info.booking_id = booked_room_info.booking_id
JOIN room_registration ON room_registration.hotel_id = booking_info.hotel_id
WHERE booked_room_info.booking_id= 1但是如果我在booking_id =1上有2个预订,但是它得到了10个结果。我想我应该做个假设条件。如果(booked.room_type && book_info.hotel_id)是相同的,那么只能从room_registration中获取行,但是我如何才能理解它。
booked_room_info
------
id | booking_id | room_type | check_in | check_out
1 | 1 | delux | 2015/1/2 | 2015/1/5
booking_info
---------
id | booking_id | hotel_id | user_id
1 | 1 | 2 | 1
hotel_info
----------
id | name | address | user_id
2 |palm hotel | newyork | 1
personal_info
-------------
id |full_name | address | nationality | booking_id
1 | sushil stha | new york | smth | 1
room_registration
-----------------
id | room_name | price | image | hotel_id | user_id
1 | delux | 1000 |room.jpg | 2 | 1发布于 2015-02-04 15:07:53
上一个联接中有一个错误:
JOIN room_registration ON room_registration.hotel_id = booking_info.hotel_id您正在使用hotel_id列连接这些表。room_registration表中可能有5行带有hotel_id=2。因此,在加入之后,您将接收2*5=10行,而不是预期的2。
所以你应该以不同的方式加入这张桌子。
如果您想从room_registration表中用精确的一行连接每一行,那么您必须指定更精确的联接条件。
要正确地加入room_registration表,可以将room_registration_id列添加到booking_info表中。然后,您可以使用以下方法加入:
JOIN room_registration ON room_registration.id = booking_info.room_registration_id发布于 2015-02-04 11:43:47
使用INNER JOIN,删除重复字段。
SELECT
bri.*,
bi.*,
hi.name AS hotelname, hi.address as hoteladdress, hi.contact AS hotelcontact,
pi.*,
rr.room_name AS roomname, rr.price AS roomprice, rr.description AS roomdescription, rr.image AS roomimage
FROM booked_room_info bri
INNER JOIN booking_info bi ON bri.booking_id = bi.booking_id
INNER JOIN hotel_info hi ON bi.hotel_id = hi.id
INNER JOIN personal_info pi ON bri.booking_id = pi.booking_id
INNER JOIN room_registration rr ON bi.hotel_id = rr.hotel_id
WHERE bri.booking_id = 1https://stackoverflow.com/questions/28319932
复制相似问题