Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL交集-语法错误_Sql_Hsqldb_Intersect_Libreoffice Base - Fatal编程技术网

SQL交集-语法错误

SQL交集-语法错误,sql,hsqldb,intersect,libreoffice-base,Sql,Hsqldb,Intersect,Libreoffice Base,我正在寻找从伦敦起飞到巴黎的航班。有关城市的信息位于机场表中,而出发机场和到达机场的缩写词位于航班中 以下是我的问题代码: SELECT flightNo,flightCompany FROM Flight JOIN Airport ON Airport.airportId=Flight.depAirport WHERE Airport.city='London' INTERSECT SELECT flightNo,flightCompany FROM Flight JOIN Airport

我正在寻找从伦敦起飞到巴黎的航班。有关城市的信息位于机场表中,而出发机场和到达机场的缩写词位于航班中

以下是我的问题代码:

SELECT flightNo,flightCompany
FROM Flight
JOIN Airport
ON Airport.airportId=Flight.depAirport
WHERE Airport.city='London'

INTERSECT

SELECT flightNo,flightCompany
FROM Flight
JOIN Airport
ON Airport.airportId=Flight.arrAirport
WHERE Airport.city='Paris';
它返回3个错误-

  • SQL状态:HY000错误代码:SQL语句中出现1000语法错误
  • SQL状态:HY000错误代码:1000
  • SQL状态:HY000错误代码:1000语法错误,意外$end,应介于或之中或类似SQL

改用
JOIN
s重新编写查询如何

SELECT f.flightNo, f.flightCompany
FROM Flight f JOIN
     Airport ad
     ON ad.airportId = f.depAirport AND ad.city = 'London' JOIN
     Airport aa
     ON aa.airportId = f.arrAirport AND aa.city = 'Paris';
或者,使用
存在

SELECT f.*
FROM Flight f
WHERE EXISTS (SELECT 1
              FROM Airport ad
              WHERE ad.airportId = f.depAirport AND ad.city = 'London'
             ) AND
      EXISTS (SELECT 1
              FROM Airport aa
              WHERE aa.airportId = f.arrAirport AND aa.city = 'Paris'
             );

使用
JOIN
s重新编写查询如何

SELECT f.flightNo, f.flightCompany
FROM Flight f JOIN
     Airport ad
     ON ad.airportId = f.depAirport AND ad.city = 'London' JOIN
     Airport aa
     ON aa.airportId = f.arrAirport AND aa.city = 'Paris';
或者,使用
存在

SELECT f.*
FROM Flight f
WHERE EXISTS (SELECT 1
              FROM Airport ad
              WHERE ad.airportId = f.depAirport AND ad.city = 'London'
             ) AND
      EXISTS (SELECT 1
              FROM Airport aa
              WHERE aa.airportId = f.arrAirport AND aa.city = 'Paris'
             );

使用默认的libreofficebase/hsqldb1.8设置引用规则和区分大小写是很棘手的。以下是您需要做的:

SELECT "flightNo","flightCompany"
FROM "Flight"
JOIN "Airport"
ON "Airport"."airportId"="Flight"."depAirport"
WHERE "Airport"."city"='London'
INTERSECT
SELECT "flightNo","flightCompany"
FROM "Flight"
JOIN "Airport"
ON "Airport"."airportId"="Flight"."arrAirport"
WHERE "Airport"."city"='Paris';
或者更好,修改Gordon的答案如下:

SELECT F."flightNo", F."flightCompany"
FROM "Flight" F JOIN
     "Airport" AD
     ON AD."airportId" = F."depAirport" AND AD."city" = 'London' JOIN
     "Airport" AA
     ON AA."airportId" = F."arrAirport" AND AA."city" = 'Paris';

使用默认的libreofficebase/hsqldb1.8设置引用规则和区分大小写是很棘手的。以下是您需要做的:

SELECT "flightNo","flightCompany"
FROM "Flight"
JOIN "Airport"
ON "Airport"."airportId"="Flight"."depAirport"
WHERE "Airport"."city"='London'
INTERSECT
SELECT "flightNo","flightCompany"
FROM "Flight"
JOIN "Airport"
ON "Airport"."airportId"="Flight"."arrAirport"
WHERE "Airport"."city"='Paris';
或者更好,修改Gordon的答案如下:

SELECT F."flightNo", F."flightCompany"
FROM "Flight" F JOIN
     "Airport" AD
     ON AD."airportId" = F."depAirport" AND AD."city" = 'London' JOIN
     "Airport" AA
     ON AA."airportId" = F."arrAirport" AND AA."city" = 'Paris';


您使用的是哪种DBMS?我使用的是LibreOffice这是一种客户端/前端工具,但您使用的是哪种DBMS?语法错误是什么?例如,您使用的是哪种DBMS?我使用的是LibreOffice这是一种客户端/前端工具,但您使用的是哪种DBMS?语法错误是什么?这些可能是一些示例,我知道这可能是如何工作的,但由于某些原因,它没有输出任何结果(应该显示机场的组合)。我不确定是否应该在第二个代码中更改任何内容,因为我对SQL有些陌生,但复制并按编写方式运行它会出现错误-无法加载数据内容,在语句中找不到表。@Sick0ne。第二个问题是“机场”。也许您的数据库对表名是区分大小写的。谢谢您的回答。第二个查询按预期工作。尽管如此,还是决定使用以下选项:
从F航班、A1机场、A2机场中选择F.flightNo、F.FlightCompany,其中(F.depAirport=A1.Airport和A1.city='London')和(F.arrAirport=A2.Airport和A2.city='Paris')
@Sick0ne。您应该学会使用正确的显式
JOIN
语法:在
FROM
子句中永远不要使用逗号。我知道这可能是如何工作的,但由于某种原因它不会输出任何结果(应该显示机场的组合)。我不确定是否应该在第二个代码中更改任何内容,因为我对SQL有些陌生,但复制并以写入方式运行它会出现错误-无法加载数据内容,在语句中找不到表。@Sick0ne。第二个问题是“机场”。也许您的数据库对表名是区分大小写的。谢谢您的回答。第二个查询按预期工作。尽管如此,还是决定使用以下选项:
从F航班、A1机场、A2机场中选择F.flightNo、F.FlightCompany,其中(F.depAirport=A1.Airport和A1.city='London')和(F.arrAirport=A2.Airport和A2.city='Paris')
@Sick0ne。您应该学会使用正确的显式
JOIN
语法:在
FROM
子句中不要使用逗号。请参阅,这是Libre Office自动为您做的。如果你保存一个文件,它会自动添加引号——如果你再次打开你的查询,它会这样看。最后决定继续(是的,戈登的第二个代码是有效的):
从F航班、机场A1、机场A2中选择F.flightNo、F.FlightCompany,其中(F.depAirport=A1.airportId和A1.city='London')和(F.arrAirport=A2.airportId和A2.city='Paris')
这是Libre Office自动为您做的。如果你保存一个文件,它会自动添加引号——如果你再次打开你的查询,它会这样看。最后决定继续(是的,戈登的第二个代码是有效的):
从F航班、机场A1、机场A2中选择F.flightNo、F.FlightCompany,其中(F.depAirport=A1.Airport和A1.city='London')和(F.arrAirport=A2.Airport和A2.city='Paris')