gpt4 book ai didi

sql - 战斗,船舶 sql 查询

转载 作者:行者123 更新时间:2023-12-02 04:49:15 24 4
gpt4 key购买 nike

这是一个关于战列舰和他们参加的战斗的模式:

 Ships(name, yearLaunched, country, numGuns, gunSize, displacement)
Battles(ship, battleName, result)

一个典型的 Ships 元组是:

 ('New Jersey', 1943, 'USA', 9, 16, 46000)

表示新泽西号战列舰于1943年下水;它属于美国,携带 9 门 16 英寸(枪管的内径或内径)的枪支,重量(以航海术语来说是排水量)为 46,000 吨。一个典型的 Battles 元组是:

 ('Hood', 'North Atlantic', 'sunk')

也就是说,H.M.S.胡德号在北大西洋海战中沉没。其他可能的结果是 'ok' 和 'damaged'

问题:列出所有在战斗中相互交战的国家对。每对只列出一次,并按字母顺序首先出现的国家/地区列出它们

回答:我是这样写的:

SELECT 
a.country, b.country
FROM
ships a, ships b, battles b1, battles b2
WHERE
name = ship
and b1.battleName = b2.battleName
and a.country > b.country

但是它说列名不明确。我该如何解决?提前致谢

最佳答案

嗯,name = ship 就是问题所在。 name 可以来自 abship 来自 b1b2

你可以这样做:

select distinct s1.country, s2.country
from ships s1
inner join Battles b1 on b.ship = s1.name
inner join Battles b2 on b2.ship <> s1.name and b2.battleName = b1.battleName
inner join ships s2 on s2.name = b2.ship and s2.country < s1.country

关于sql - 战斗,船舶 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170249/

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