【问题标题】:in postgresql how can I join 4 tables where the first join has a constraint?在 postgresql 中,如何连接第一个连接有约束的 4 个表?
【发布时间】:2019-03-16 23:58:54
【问题描述】:

我想加入 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”放在第一个连接子句中。有可能吗?

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

编辑:我不想在结果表中包含列 hall_rooms.hall_id,我只希望约束为真。

【问题讨论】:

  • 因为所有的join都是inner join,直接加where hall_rooms.hall_id = 1就可以了,不用放在join条件中
  • @a_horse_with_no_name 谢谢!

标签: postgresql inner-join


【解决方案1】:

您可以使用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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 2021-01-10
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多