Ответ 1
Например, если вы пытаетесь получить имя страны с помощью параметра Country_ID в этой таблице Project, указанной в вашем вопросе, вы можете сделать что-то вроде
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
WHERE SomeColum = 'Your Condition'
1) SELECT. Вы выбираете столбцы, которые вам нужны в вашем наборе результатов.
2) FROM you name имя (имена)
3) В разделе ON вы определяете взаимосвязь между таблицами. Таблица "Проекты" имеет столбец id_Country, который ссылается на таблицу id_Country в странах, определяет взаимосвязь между этими двумя таблицами.
4) После того, как вы выберете список столбцов, Источник данных (таблицы), Их взаимосвязь (On Clause), вы можете отфильтровать количество строк, возвращающихся из вашего запроса, например, вы можете что-то вроде id_Country
WHERE C.CountryName = 'UK' вернет результаты только из Великобритании.
5) В разделе "Пункты" буквы "C" и "P" являются псевдонимами, поэтому нам не нужно снова вводить полные имена таблиц снова n, делает наш код более простым и легким для чтения и отладки.
Независимо от того, сколько таблиц вы должны объединить, чтобы получить требуемые данные, если вы можете определить взаимосвязь между ними в своем запросе, он должен работать нормально. SQL-сервер редко вы найдете все необходимые данные в одной таблице, как правило, вы присоединитесь к 2-3 таблицам или более таблицам. Например, вам нужны некоторые данные, которые присутствуют в трех разных таблицах, которые вы бы присоединили к ним все три в одном запросе, что-то вроде этого...
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
INNER JOIN Table_3_Name T3
ON T3.CommonColumn = P.SomeCommonColumn (it will be a common column between table 3 and Projects OR Countries)
WHERE SomeColum = 'Your Condition'
Но вам действительно нужно искать в объединениях, поскольку вы можете делать разные типы соединений между таблицами. В этом примере я использовал INNER JOIN, который возвращает только соответствующие строки между всеми этими таблицами, вы можете делать LEFT JOIN или RIGHT JOIN.
LEFT JOIN возвращает все строки из таблицы на стороне LEFT ключевого слова JOIN и соответствует только строкам из других таблиц.
RIGHT JOIN возвращает все строки из правой части ключевого слова JOIN и только мантирует строки из других таблиц.
Запросы с желаемыми столбцами
Select customers.customer_name, Products.Product_type, Manufacturers.Manuf_name
from Projects inner join customers
on customers.cust_id= Projects.proj_cust_id
inner join Products
on Products.prod_id= Projects.proj_prod_id
inner join Manufacturers
on Manufacturers.man_id= Projects.proj_man_id
Использование псевдонима даст вам точно такое же повторное использование, но легко читаемый код также попробует это....
Select C.customer_name, Prod.Product_type, M.Manuf_name
from Projects Proj inner join customers C
on C.cust_id= Proj.proj_cust_id
inner join Products Prod
on Prod.prod_id= Proj.proj_prod_id
inner join Manufacturers M
on M.man_id= Proj.proj_man_id