gpt4 book ai didi

mysql - SQL查询以获取每个可能的链接

转载 作者:行者123 更新时间:2023-11-29 06:21:02 25 4
gpt4 key购买 nike

我有一个包含以下结构的三个表的方案

donuts (name: string, price: integer) 
grocery (no: string, gname: string, credit: integer)
distributor (dname: string, gno: string, deliverydate: date)

distributor.dname 和 distributor.gno 是引用 donuts 和 grocery 的外键,其中键是名称而不是各自我在尝试编写 2 个查询时遇到问题:

  1. 我正在尝试查询每个“Vons”或“Smiths”杂货店中所有 donut 的名称。 (在 gname 中指定)

我试过了

SELECT d.name
FROM donuts d, grocery g, distributor dd
WHERE d.name = dd.cname
AND dd.gno = g.no
AND g.gname = 'Vons' OR g.gname = 'Smiths'
  1. 我正在尝试查询由至少两个不同的 donut 共享的杂货店编号(杂货店中没有)。

我试过了

SELECT g.no
FROM donuts d, grocery g, distributor dd
WHERE g.no = dd.gno

这似乎并没有返回每次出现或说明 OR。我该如何解决我的查询?我对 sql 有点陌生,请原谅我缺乏知识。

最佳答案

1) 您在查询中使用了 AND 和 OR 的组合,您需要使用括号来指定 order of operations ,否则 OR 子句将不会按照您预期的方式进行解释。使用括号的示例:

SELECT d.name
FROM donuts d, grocery g, distributor dd
WHERE d.name = dd.cname
AND dd.gno = g.no
AND ( g.gname = 'Vons' OR g.gname = 'Smiths' )

在上面的示例中,括号确保 OR 运算仅在两个 gname 值之间,而不是在 gname = 'Smiths' 和 where 子句的其余部分之间。

2) 假设数据只有每个杂货店 - 分销商 - donut 关系的一个实例,并且每个杂货店只从一个分销商那里获得每种 donut 类型,您应该能够计算行数并应用 HAVING 子句来查找那里的位置是两个或多个关系:

SELECT g.no, COUNT(*) as Quantity
FROM distributor dd, grocery g, donuts d
WHERE dd.dname = d.name
AND dd.gno = g.no
GROUP BY g.no
HAVING COUNT(*) >= 2

关于mysql - SQL查询以获取每个可能的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267449/

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