postgresql — написание запроса для нескольких таблиц в переполнении стека

Я пишу свой последний запрос на домашнее задание, но я застрял на нем прямо сейчас. Этот запрос требует, чтобы я взял информацию из 2 таблиц вместо 1. Я запутался в том, как получить эту информацию из обеих таблиц и как их собрать. Вот описание запроса, который я пытаюсь написать.

Find the name, independence year, and region of all countries where English is an official language.
Order results by region ascending and alphabetize the results within each region by country name.
(44 results)

Вот таблицы, которые я собираюсь использовать для этого запроса

Table "lab2.country_language"Column    |         Type          |               Modifiers
--------------+-----------------------+----------------------------------------
country_code | character(3)          | not null default ''::bpchar
language     | character varying(30) | not null default ''::character varying
is_official  | boolean               | not null default false
percentage   | real                  | not null default 0::real
Indexes:
"country_language_pkey" PRIMARY KEY, btree (country_code, language)
Foreign-key constraints:
"country_language_country_code_fkey" FOREIGN KEY (country_code) REFERENCES country(country_code) ON    DELETE CASCADE

=> \d country
Table "lab2.country"Column      |         Type          |               Modifiers

-----------------+-----------------------+--------------------------------------
country_code    | character(3)          | not null default ''::bpchar
name            | character varying(52) | not null default ''::character varying
continent       | continent             | not null
region          | character varying(26) | not null default ''::character varying
surface_area    | real                  | not null default 0::real
indep_year      | smallint              |
population      | integer               | not null default 0
life_expectancy | real                  |

0

Решение

Как упоминалось в приведенном выше комментарии, в этом случае вы должны выполнить SQL (внутреннее) соединение. Так что у вас будет что-то вроде:

SELECT name, indep_year, region
FROM lab2.country
JOIN lab2.country_language
ON lab2.country.country_code = lab2.country_language.country_code
WHERE …
2

Другие решения

Хорошей отправной точкой будет учебник по PostgreSQL, особенно, соединения между таблицами.

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

Учебник дает лучшие примеры, чем я могу.

0

По вопросам рекламы [email protected]