用于连接 5 个表的 SQL 查询 [重复]
Posted
技术标签:
【中文标题】用于连接 5 个表的 SQL 查询 [重复]【英文标题】:SQL Query for joining 5 tables [duplicate] 【发布时间】: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,我们可以解释为什么它不起作用、要更改什么等。然而,通常不被接受的是那些只要求我们做家庭作业的问题 为你。 【参考方案1】:这是基本的INNER JOIN
s,具有分组功能 (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】:您可以使用join
s 和group by
,但您不需要所有表格。如果我理解数据模型,你只需要reserve
和has
:
select h.customerid, count(*)
from reserve r join
has h
on r.cardno = h.cardno
group by h.customerid
having count(*) = 2;
【讨论】:
以上是关于用于连接 5 个表的 SQL 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章