SQL - объединение / ссылка на столбцы нескольких таблиц - PullRequest
0 голосов
/ 29 сентября 2019

Написание этого в Oracle Live SQL, и я новичок. Мне нужно сослаться на несколько атрибутов моей таблицы TRUCK с условием одного значения в моей таблице BASE. Вот мои таблицы, которые я создал, и задачи, которые необходимо выполнить:

Таблицы BASE и TRUCK

• Показать номер грузовика, дату покупки и пробег всех грузовиков с Далласом в качестве базы.

• Показать номер грузовика и дату покупки всех грузовиков с Далласом в качестве базы и с пробегом менее 30 000 миль.

Бороться и ничего не работает. Я продолжаю получать "ORA-00933: команда SQL не завершена должным образом", я возился с JOIN и без ... Заранее спасибо. Я уверен, что если я смогу понять первое задание, то смогу понять второе.

create table BASE 
( BASENUM CHAR(3) NOT NULL, 
BASECITY VARCHAR2(20), 
BASESTATE CHAR(2), 
BASEPHON VARCHAR2(10), 
BASEMGR VARCHAR2(10), 
PRIMARY KEY(BASENUM) 
);
INSERT INTO BASE (BASENUM, BASECITY, BASESTATE, BASEPHON, BASEMGR)
VALUES (501, 'Dallas', 'TX', 893-9870, 'J. Jones');
INSERT INTO BASE (BASENUM, BASECITY, BASESTATE, BASEPHON, BASEMGR)
VALUES (502, 'New York', 'NY', 234-7689, 'K. Lee');

create table TRUCK  
( TNUM CHAR(4) NOT NULL,  
BASENUM CHAR(3),  
TYPENUM CHAR(1),  
TMILES NUMBER(7,1),  
TBOUGHT DATE,  
TSERIAL VARCHAR2(20),  
PRIMARY KEY(TNUM),  
FOREIGN KEY (BASENUM)
REFERENCES BASE(BASENUM)
);
INSERT INTO TRUCK (TNUM, BASENUM, TYPENUM, TMILES, TBOUGHT, TSERIAL)
VALUES (1001, 501, 1, 5900.2, to_date('1990-11-08', 'yyyy-mm-dd'), 'aa-125');
INSERT INTO TRUCK (TNUM, BASENUM, TYPENUM, TMILES, TBOUGHT, TSERIAL)
VALUES (1002, 502, 2, 64523.9, to_date('1990-11-08', 'yyyy-mm-dd'), 'ac-213');
INSERT INTO TRUCK (TNUM, BASENUM, TYPENUM, TMILES, TBOUGHT, TSERIAL)
VALUES (1003, 501, 2, 32116.0, to_date('1991-09-29', 'yyyy-mm-dd'), 'ac-215');
INSERT INTO TRUCK (TNUM, BASENUM, TYPENUM, TMILES, TBOUGHT, TSERIAL)
VALUES (1004, NULL, 2, 3256.9, to_date('1992-01-14', 'yyyy-mm-dd'), 'ac-315');

1 Ответ

0 голосов
/ 29 сентября 2019

Простой Inner Join или Left Outer Join поможет вам достичь поставленных целей.

По первому вопросу

Отображение номера грузовика, даты покупки и пробегавсе грузовики с Далласом в качестве базы.

SELECT tnum, tbought, tmiles FROM Truck T LEFT OUTER JOIN Base B ON T.basenum = B.basenum WHERE B.basecity='Dallas'

По второму вопросу

Показать номер грузовика и дату покупки всех грузовиков с Далласом в качестве базы и спробег менее 30 000 миль.

SELECT tnum, tbought, tmiles FROM Truck T LEFT OUTER JOIN Base B ON T.basenum = B.basenum WHERE B.basecity='Dallas' AND T.tmiles < 30000
...