Естественное соединение MySQL 5.6
Хотелось бы узнать, сколько медалей завоевала страна. Поэтому я решил объединить таблицы www_result и www_country. Они имеют общий атрибут country_id. Пока это мой код, но я получаю синтаксические ошибки и не могу найти причину.
SELECT * FROM www_results WHERE position = 1 OR position = 2 OR position = 3
NATURAL JOIN
www_countries;
заранее спасибо
1 ответ
Решение
У вас просто все в неправильном порядке, выполните СОЕДИНЕНИЯ, а затем примените предложение WHERE...
Вы должны также указать, на какую таблицу вы ссылаетесь при обращении к имени поля. Это не всегда необходимо, но делает его более читабельным и менее подверженным ошибкам.
SELECT
*
FROM
www_results
NATURAL JOIN
www_countries
WHERE
www_results.position IN (1, 2, 3)
;
Я также на самом деле рекомендую против NATURAL JOIN
тем не мение. Если у вас случайно есть поля с одинаковыми именами, вы получите нежелательное поведение. Я бы использовал явное INNER JOIN
s.
SELECT
*
FROM
www_results
INNER JOIN
www_countries
ON www_results.country_id = www_countries.country_id
-- Replace the "country_id" with whatever field you want to join on
WHERE
www_results.position IN (1, 2, 3)
;