【问题标题】:SQL Query for joining 5 tables [duplicate]用于连接 5 个表的 SQL 查询 [重复]
【发布时间】:2021-07-05 13:26:16
【问题描述】:

我有五张桌子:

Cutomer(CustomerID, name, surname)

PaymentMethod(cardNo,securityCode,expirationDate)

Ticket(ticketID, parkingnumber)

Has(CustomerID, CardNo)

Reserve(TicketID,cardNo)

如何在 pgadmin-4 中编写 SQL 查询来列出恰好预订了两张票的客户?

感谢您的帮助!

【问题讨论】:

  • 您是否有任何示例数据,然后您可以使用这些数据显示您希望从该示例中获得什么结果?你试过什么?如果您可以展示一些您尝试过的 SQL,我们可以解释为什么它不起作用、要更改什么等。然而,通常不被接受的是那些只要求我们做家庭作业的问题 你。

标签: sql pgadmin-4


【解决方案1】:

这是基本的INNER JOINs,具有分组功能 (GROUP BY) 以计算每位客户的门票。

然后您可以在HAVING 子句中使用COUNT 函数来应用特定条件。

类似:

SELECT
    c.CustomerID,
    COUNT(t.TicketID)
FROM
    Cutomer c
    INNER JOIN Has h ON h.CustomerID = c.CustomerID
    INNER JOIN Reserve r ON r.cardNo = h.CardNo
    INNER JOIN Ticket t on t.TicketID = r.TicketID
GROUP BY
    c.CustomerID
HAVING
    COUNT(t.TicketID) = 2

【讨论】:

    【解决方案2】:

    您可以使用joins 和group by,但您不需要所有表格。如果我理解数据模型,你只需要reservehas

    select h.customerid, count(*)
    from reserve r join
         has h
         on r.cardno = h.cardno
    group by h.customerid
    having count(*) = 2;
    

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多