gpt4 book ai didi

mysql - 创建涉及两个表的 SQL 查询,其中一个表只需要一个值

转载 作者:行者123 更新时间:2023-11-29 00:17:54 25 4
gpt4 key购买 nike

我是 SQL 的新手,我不知道如何创建我需要的那种查询。

详情如下。我有两个表需要从中检索数据。它们是“客户”“出价”

'Client' 表具有我需要获取的以下值:
'ClientId', 'ClientFirstName', 'ClientSurName', 'ClientAddressLine1', 'ClientAddressLine2', 'ClientAddressLine3', 'telephoneHome', 'telephoneWork', 'telephoneMobile ', 'clientFax', 'clientEmail'

'Bids'表中,我只需要获取'clientId'

我的问题是我需要在表格中显示所有客户的列表,无论他们是否有与之关联的出价。我还需要使用 'Y''N' 显示他们是否有出价。

我尝试了多种不同的方法来做到这一点,但无济于事。
我不能使用 UNION,因为 'Client''Bids'表包含不同数量的列并且使用 JOIN(至少据我所知如何使用它)仅显示其 'clientId' 对应于 的客户端>“出价” 表中的“clientId

就目前而言,我的 sql 查询如下所示:

SELECT Client.*, Bids.clientId AS clientBidId FROM Client JOIN Bids ON Client.clientId = Bids.clientId ORDER BY Client.clientId ASC

如前所述,这不会显示没有出价的客户。由于某种原因,它也在复制客户(我怀疑这是基于他们与他们相关联的出价数量)。

通常情况下,我会不停地用头撞 table ,直到想出解决方案,但我发现自己的时间有限,而且我完全不知道如何解决这个问题,因为我是如此SQL 的新手,所以我来到这里 - 这是第一次 - 看看你们中是否有人可以提供一些帮助。即使为我指出正确的方向也会有很大的帮助。

最佳答案

这正是 LEFT JOIN 的用途;辅助表中没有对应行的行将包含 NULL

对于复制,您可以GROUP 结果BY clients.id。我包括了出价计数,因为它至少与“Y”/“N”一样有用。

SELECT clients.*, count(bids.id) as bids
FROM clients
LEFT JOIN bids ON bids.client_id = clients.id
GROUP BY clients.id;

考虑这个功能完整的例子:http://sqlfiddle.com/#!2/0c257/1

关于mysql - 创建涉及两个表的 SQL 查询,其中一个表只需要一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com