Java SQL-连接/引用多个表的列

Java SQL-连接/引用多个表的列,java,join,reference,attributes,alias,Java,Join,Reference,Attributes,Alias,用Oracle Live SQL写这篇文章,我是个新手。我需要将卡车表的多个属性引用到基表中一个值的条件。以下是我创建的表和要执行的任务: 底座和卡车工作台 •显示以达拉斯为基地的所有卡车的卡车编号、购买日期和里程 •显示以达拉斯为基地且里程数低于30000英里的所有卡车的卡车编号和购买日期 我一直在挣扎,但什么都不起作用。我不断收到“ORA-00933:SQL命令未正确结束”的消息,我修改了JOIN和WITHON。。。先谢谢你。我确信如果我能理解第一项任务,我就能理解第二项任务 create

用Oracle Live SQL写这篇文章,我是个新手。我需要将卡车表的多个属性引用到基表中一个值的条件。以下是我创建的表和要执行的任务:

底座和卡车工作台

•显示以达拉斯为基地的所有卡车的卡车编号、购买日期和里程

•显示以达拉斯为基地且里程数低于30000英里的所有卡车的卡车编号和购买日期

我一直在挣扎,但什么都不起作用。我不断收到“ORA-00933:SQL命令未正确结束”的消息,我修改了JOIN和WITHON。。。先谢谢你。我确信如果我能理解第一项任务,我就能理解第二项任务

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');

一个简单的
内部连接
左侧外部连接
将帮助您实现目标

第一个问题,

显示以达拉斯为基地的所有卡车的卡车编号、购买日期和里程

关于第二个问题

显示以达拉斯为基地且里程低于30000英里的所有卡车的卡车编号和购买日期

从卡车T左外侧选择tnum、Tbuw、tmiles,在T.basenum=B.basenum上连接底座B,其中B.basecity='Dallas'和T.tmiles<30000

展示您的尝试。您的问题是什么?当你得到一个你不期望/不理解的结果时,停止寻找你的总体目标,找出你的误解是什么。--隔离第一个意外/误解的子表达式及其输入和输出,了解是什么误解、打字错误、错误推理等导致了它。然后组成一个新的整体查询。(调试基础。)错误消息几乎肯定是常见问题。(初学者的查询或其部分也是如此。)在考虑发布之前,请始终用谷歌搜索您的错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,带有或不带您的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。如果你发布一个问题,用一句话作为标题。展示你能做的部分,不要要求我们用定制的教程重写你的课本&做你的(家庭)工作。请在代码问题中给出一个--cut&paste&runnable代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。(调试基础。)谢谢,但另一个人理解了我的问题并回答了。这很有魅力!我想我已经掌握了加入的窍门。我非常感谢你的帮助!很高兴我能帮助你。向上投票是一种很好的感谢:)文卡特·穆法沙@StevieJ321没有向上投票的名声,但他们可以接受。谷歌与“stackexchange”的更多信息。是的,我接受了功能和有用的答案。再次感谢!
SELECT tnum, tbought, tmiles FROM Truck T LEFT OUTER JOIN Base B ON T.basenum = B.basenum WHERE B.basecity='Dallas'
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