【问题标题】:PosgreSQL - column referece is ambiguousPostgreSQL - 列引用不明确
【发布时间】:2023-01-18 19:29:05
【问题描述】:

我正在尝试为每个房间获取多个单元。我有两个单独的桌子房间和单元。房间可以只有一个,但可以有多个单元。我正在尝试获取一个房间列表,其中包含每个房间的单元数。即使给定房间中有 0 个单元也是如此。我工作到了我想在表中打印 room_id 的地步。房间表和单元表中的 room_id 数字。因此,我收到错误消息,指出 room_id 不明确。当然,我希望这能理解我想要房间表中的 room_id。

我有以下查询:

SELECT count(ucr.*) units_no
, ucr.room_name
, ucr.room_image
, ucr.room_id
FROM (
SELECT u.*
, r.room_image
, r.room_name
, r.room_id
FROM unit u
LEFT JOIN room r ON r.room_id = u.room_id
WHERE r.room_id = 'b6229c33-a37e-4457-8fb0-941d632c2540'
) ucr
GROUP BY ucr.room_name, ucr.room_image, ucr.room_id;

我收到以下错误: column reference "room_id" is ambiguous

我试过以下: , ucr.r.room_id

还有以下: , ucr(r.room_id)

还有以下: , ucr.(r.room_id)

我没有选择了。我该怎么做呢?感谢您花时间查看此问题。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    unitroom 表都有一个名为room_id 的列。因此,内部选择是不明确的:

    SELECT u.*, r.room_image, r.room_name, r.room_id
    

    因为不清楚哪一个room_id 在外部查询中使用的值。您可以将两个 room_id 列别名为唯一名称,但鉴于您的查询似乎甚至不需要 unit 表中的列,我建议:

    SELECT COUNT(ucr.room_name) units_no,
           ucr.room_name,
           ucr.room_image,
           ucr.room_id
    FROM (
        SELECT r.room_image, r.room_name, r.room_id
        FROM unit u
        LEFT JOIN room r ON r.room_id = u.room_id
        WHERE r.room_id = 'b6229c33-a37e-4457-8fb0-941d632c2540'
    ) ucr
    GROUP BY ucr.room_name, ucr.room_image, ucr.room_id;
    

    【讨论】:

      【解决方案2】:

      只需添加或更改 r.room_id 别名,因为 room_id 在 unit 表和 room 表上。所以他们中的一个需要得到其他名字,所以最好的解决方案改变别名:

      SELECT count(ucr.*) units_no
      , ucr.room_name
      , ucr.room_image
      , ucr.rooom_id
      FROM (
      SELECT u.*
      , r.room_image
      , r.room_name
      , r.room_id as rooom_id
      FROM unit u
      LEFT JOIN room r ON r.room_id = u.room_id
      WHERE r.room_id = 'b6229c33-a37e-4457-8fb0-941d632c2540'
      ) ucr
      GROUP BY ucr.room_name, ucr.room_image, ucr.rooom_id;
      

      【讨论】:

        猜你喜欢
        • 2012-04-06
        • 1970-01-01
        • 2018-01-26
        • 2021-01-08
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多