Прежде всего, я хочу извиниться, если я задаю совершенно неправильный вопрос - я начинающий, когда дело доходит до SQL, и я не уверен, как достичь своей цели, но я предполагаю, что подпросы - это то, с чем мне нужно работать.Как использовать два подзапроса для вытягивания значений из двух таблиц? T-SQL
У меня есть две таблицы, одна с данными временной карты (Таблица 1), а другая с данными проекта высокого уровня (Таблица 2).
Таблица 1:
+------+------------------+---------------+-------------+
| code | work_description | resource_name | total_hours |
+------+------------------+---------------+-------------+
| 101 | Time Reporting | Jane Doe | 5 |
| 101 | Time Reporting | Jane Doe | 7 |
| 101 | Time Reporting | Jane Doe | 9 |
| 201 | Time Reporting | Joe Smith | 2 |
| 201 | Time Reporting | Joe Smith | 4 |
| 201 | Time Reporting | Joe Smith | 6 |
+------+------------------+---------------+-------------+
Таблица 2:
+------+------------+----------------+
| code | project_id | descr |
+------+------------+----------------+
| 100 | 100 | Project A |
| 101 | 100 | Time Reporting |
| 102 | 100 | Milestones |
| 103 | 100 | Planning |
| 200 | 200 | Project B |
| 201 | 200 | Time Reporting |
| 202 | 200 | Milestones |
| 203 | 200 | Planning |
+------+------------+----------------+
В таблице 2, когда столбец код равен колонке project_id, DESCR показывает название проекта. Мне нужно вытащить всю таблицу 1 в дополнение к имени проекта, которое соответствует каждой строке.
Что мне нужно:
+-----------+------+------------------+---------------+-------------+
| descr | code | work_description | resource_name | total_hours |
+-----------+------+------------------+---------------+-------------+
| Project A | 101 | Time Reporting | Jane Doe | 5 |
| Project A | 101 | Time Reporting | Jane Doe | 7 |
| Project A | 101 | Time Reporting | Jane Doe | 9 |
| Project B | 201 | Time Reporting | Joe Smith | 2 |
| Project B | 201 | Time Reporting | Joe Smith | 4 |
| Project B | 201 | Time Reporting | Joe Smith | 6 |
+-----------+------+------------------+---------------+-------------+
Мой процесс, хотя в том, что сначала я должен найти PROJECT_ID, которая относится к каждой строке в таблице 1. Затем, я мог бы использовать это значение для сопоставления с PROJECT_ID в таблице 2, поэтому я мог вытащить название проекта из колонки descr
Вот что у меня есть. Это правильно вытягивает идентификатор проекта (я не знаю, является ли это лучшей практикой). Я пробовал несколько разных подзапросов для имени проекта, но я еще не смог сделать это правильно.
SELECT
(SELECT t2.code WHERE t1.code=t2.code) as found_project_id,
t2.descr,
t1.code,
t1.work_description,
t1.resource_name,
t1.total_hours
FROM Table1 as t1
INNER JOIN Table2 as t2 ON t1.code=t2.code
Так что мой вопрос, как я могу использовать подзапросы (или любой другой метод), чтобы вытащить все из таблицы 1, в дополнение к именам проектов?
Возможно, вы захотите исследовать _correlated subquery_. Хотя кажется, что здесь 'JOIN' более уместен, коррелированный подзапрос - еще один полезный инструмент. – HABO