#sql #sql-server #join
#sql #sql-сервер #Присоединиться
Вопрос:
Я занят завершением старой экзаменационной работы
Один вопрос звучит следующим образом:
Изучите следующие таблицы и ответьте на вопросы, приведенные ниже:
CREATE TABLE CARDHOLDERS(
CH_ID INTEGER IDENTITY,
CH_NAME VARCHAR(50),
CH_SURNAME VARCHAR(50),
CH_IDNUMBER CHAR(13),
CH_CARDNUMBER CHAR(13),
CH_STATUS CHAR(2),
CH_CREATE_DATE DATETIME,
CH_LAST_CHANGE_DATE DATETIME)
CARDHOLDER_STATUS //apologies if this is wrongly formatted
CHS_STATUS CHS_DESCRIPTION
00 Active
01 Not Active
Напишите запрос для получения следующих результатов
Cardholder Status
Ashton, T Active
Brown, C Active
Crawford, C Not Active
Ellis, J Active
Я предполагаю, что мне придется использовать полное внешнее соединение, поскольку ни один столбец не совпадает в двух таблицах.
Я написал этот фрагмент кода, но он выдает синтаксическую ошибку.
SELECT CH_NAME, CH_SURNAME
FROM CARDHOLDERS
FULL OUTER JOIN
ON CARDHOLDER_STATUS.CHS_STATUS, CARDHOLDER_STATUS.CHS_DESCRIPTION
- Я на правильном пути или моя логика совершенно неверна?
- Правильно ли я использую внешнее соединение, какое-либо альтернативное соединение, которое я мог бы использовать?
- Как я могу извлечь только первую букву из CH_NAME для использования в качестве начальной?
Комментарии:
1. Вы не можете просто присоединиться
CH_STATUS = CHS_STATUS
?
Ответ №1:
Не видя примеров данных, я бы ожидал, что он будет следовать «просто работать»:
SELECT ch.CH_SURNAME ', ' LEFT(ch.CH_NAME, 1) AS Cardholder,
chs.CHS_DESCRIPTION AS Status
FROM CARDHOLDERS AS ch
INNER JOIN CARDHOLDER_STATUS AS chs
ON chs.CHS_STATUS = ch.CH_STATUS
Ответ №2:
Попробуйте это
SELECT CH_NAME ',' CH_SURNAME,CHS_Description
FROM CARDHOLDERS C
JOIN CARDHOLDER_STATUS S on S.CHS_STATUS = C.CH_STATUS