这是一个关于战舰和他们战斗的战斗模式:战斗,船舶SQL查询
Ships(name, yearLaunched, country, numGuns, gunSize, displacement)
Battles(ship, battleName, result)
典型船舶元组是:
('New Jersey', 1943, 'USA', 9, 16, 46000)
这意味着,战舰新泽西是1943年推出;它属于美国,携带9口大小16英寸(内径或内径)的枪支,并加权(以航海术语计算)46,000吨。一个典型的Battles元组是:
('Hood', 'North Atlantic', 'sunk')
也就是说,H.M.S.胡德在北大西洋的战斗中沉没。其他可能的结果是'好的'和'损坏的'
问题:列出所有在战斗中相互作战的国家对。每对只有一次名单,并与至上按字母顺序排列第一
回答全国一一列举:我写了这个:
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'就是问题。名字可能来自a或b,并且从b1或b2出货 –
在您的WHERE子句中,'name = ship'需要合格。另外,在同一场战斗中,你如何区分战场上的敌对国家和盟国? – RBarryYoung
SQL不知道你正在寻找哪个名字和船。尝试:'SELECT a.country,b.country from ships a,ships b,battles b1,battles b2 WHERE a.name = b1.ship and b1 .battleName = b2.battleName和a.country> b.country' –