2010-11-25 2 views
1

Я работаю над услугой конвертации валюты с другом, но столкнулся с большой проблемой, ближе к концу проекта.SQL JOIN Query - Confused

У нас есть 3 таблицы, currencys (Содержит код валюты, например, «GBP», название валюты, текущий курс и временную метку), страны (Содержит код страны, например «США» и местоположение, на которое оно ссылается), currency_country (содержит код страны и валютный код, это составной первичный ключ, например, примерная запись будет выглядеть так: FR - EUR, IR - EUR, US - USD, GB - GBP, поэтому в этом списке перечислены все страны и соответствующая валюта).

Мне сказали использовать JOIN, чтобы связать таблицы, мне нужно захватить все страны, с которыми связан код, и расположение их из таблицы country.

У меня почти нет опыта работы с SQL, но только базовые запросы и теория баз данных не являются сильной стороной.

Любые советы, помощь, указатели приветствуются.

+1

Дизайн базы данных - это подвал приложения. Построение приложения на плохой дизайн db - это как построить квадратный дом на круглом подвале: пустая трата времени и денег. Так что три раза проверьте этот этап. – 2010-11-25 11:42:47

ответ

2

JOINS в основном соединяют две или более связанные таблицы вместе, чтобы сделать большую таблицу. Если вы использовали Excel, это похоже на супер VLOOKUP. Синтаксис JOIN дополняет ваш пункт FROM. Вы указываете тип JOIN (INNER, LEFT OUTER, RIGHT OUTER + другие типы и стенографию) и условие ON (где строки из первой таблицы будут сопоставляться со второй таблицей).

Учитывая вашу три таблицы, вы должны быть в состоянии принести всю информацию, которую вы хотите что-то вроде:

SELECT countries.name 
     , currency_countries.country_code 
     , currencies.name 
     , currency_countries.currency_code 
     , currencies.current_rate 
    FROM currency_country 
     INNER JOIN currencys 
     ON currency_country.currency_code = currencys.code 
     INNER JOIN countries 
     ON currency_country.country_code = countries.code 
0

Я предполагаю, что у вас есть ссылочная целостность между вашими таблицами, такими, что а Currency_Country строка не существует без строки в Стране и по крайней мере одну строку в валюте. В этом случае таблицу валют не нужно использовать.

Чтобы найти все страны с соответствующей валюты, используйте:

SELECT Countries.country_code, location 
FROM Countries INNER JOIN Currency_Country 
ON Countries.country_code = Currency_Country.country_code 
0

Вы должны читать на простой DB/SQL вещи, это все хорошо и хорошо получать ответ здесь, но на голой мин вас должны понимать, как делать вещи, как присоединиться к таблицам

Это выглядит довольно хорошо, чтобы начать вас: http://www.sql-tutorial.net/SQL-tutorial.asp

Во всяком случае, ваш SQL:

[EDIT - 2 сообщения избили меня до SQL;)]

0

Вам нужна только таблица currency_country, если у вас есть отношение «многие ко многим» между валютами и странами. Это так? В противном случае вам просто нужна таблица валют и таблица «Страны», которая содержит код ISO валюты. (Обратите внимание, что в некоторых валютах нет ассоциированной с ними страны)