Вот схема о линкорах и сражениях они сражались в:сражение, корабли SQL запросы
Ships(name, yearLaunched, country, numGuns, gunSize, displacement)
Battles(ship, battleName, result)
Типичное судно кортеж будет:
('New Jersey', 1943, 'USA', 9, 16, 46000)
означает, что линкор Нью-Джерси был запущен в 1943 году; он принадлежал США, перевозил 9 орудий размером 16 дюймов (диаметр ствола или внутренний диаметр ствола) и взвешенный (перемещенный, морским сроком) 46 000 тонн. Типичный кортеж для Сражений:
('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 не знает, какое имя и корабль вы ищете .. try: 'SELECT a.country, b.country с кораблей a, корабли b, сражения b1, сражения b2 WHERE a.name = b1.ship и b1 .battleName = b2.battleName и a.country> b.country' –