在postgresql中,如何连接第一个联接有约束的4个表?

时间:2018-10-11 19:51:43

标签: postgresql inner-join

我想联接4个表,但第一个表有约束。 这是没有约束的联接,效果很好:

    SELECT room_number, rent_rate, leases.place_number, students.id, 
           students.first_name, students.last_name
      FROM rooms
INNER JOIN hall_rooms ON rooms.place_number = hall_rooms.place_number 
INNER JOIN leases ON leases.place_number = rooms.place_number
INNER JOIN students ON students.id = leases.place_number;

但是我想在第一个连接子句中添加约束“ where hall_rooms.hall_id = 1”。有可能吗?

我尝试将其直接放在第一个连接类之后/第二个内部连接之前,但是它不起作用。

edit:我不想在结果表中包括hall_rooms.hall_id列,我只是希望约束为真。

1 个答案:

答案 0 :(得分:0)

您可以使用and逻辑运算符将其添加到联接条件中:

    SELECT room_number, rent_rate, leases.place_number, students.id, 
            students.first_name, students.last_name
      FROM rooms
INNER JOIN hall_rooms ON rooms.place_number = hall_rooms.place_number 
INNER JOIN leases ON (
                       leases.place_number = rooms.place_number AND 
                       hall_rooms.hall_id = 1 -- here!
                     ) 
INNER JOIN students ON students.id = leases.place_number;