如何使用mysql db编写hibernate查询

pkbketx9  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(276)

我试图从所有3个表中选择一行。这些表有相同的结构,4列,“代码”,“机场名”,“纬度”,“经度”。
我要写的问题是:
选择finnairroute.code,finnairroute.airportname,finnairroute.latitude,finnairroute.longitude,lhroute.airportname,lhroute.latitude,lhroute.longitude,sasroute.code,sasroute.airportname,sasroute.latitude,sasroute.longitude,frs.finnairroute,frs.lhroute where sasroute.code=“ber”或lhroute.code=“ber”;
使用mysql workbench进行了测试,结果如下:

我应该如何编写查询以获得一行包含“ber”的所有信息?
非常感谢!

pexxcrt2

pexxcrt21#

您可以尝试以下方法:

SELECT finnairroute.*,lhroute.*,sasroute.* FROM DUAL
LEFT OUTER JOIN finnairroute ON (finnairroute.code='BER')
LEFT OUTER JOIN lhroute ON (lhroute.code='BER')
LEFT OUTER JOIN sasroute ON (sasroute.code='BER')

问题是,即使代码不在任何一个表中,也总是会得到一行。您需要测试finnairroute.code、lhroute.code和sasroute.code是否为空。
解决问题的另一种方法:

SELECT 'finnair' as company,code,airportname,latitude,longitude FROM finnairroute WHERE code='BER'
UNION SELECT 'lh' as company,code,airportname,latitude,longitude FROM lhroute WHERE code='BER'
UNION SELECT 'sas' as company,code,airportname,latitude,longitude FROM sasroute WHERE code='BER'

这将为您提供0到3行,具体取决于哪些表包含代码“ber”。另外一列“company”告诉您哪一个表包含每一行。

相关问题