SQLite脚本从多个表中选择

SQLite脚本从多个表中选择,sqlite,Sqlite,我想把几个表合并成一个脚本。要做到这一点,我意识到我需要使用内部连接,这让我感到困惑 "SELECT UserSpecies.commonName, UserSpecies.commonNameFR, UserSpecies.commonNameES, UserSpecies.commonNameDE, UserSpecies.speciesName, UserSpecies.speciesRegion, UserSpecies.speciesDetails, UserSpecies.maxSi

我想把几个表合并成一个脚本。要做到这一点,我意识到我需要使用内部连接,这让我感到困惑

"SELECT UserSpecies.commonName, UserSpecies.commonNameFR, UserSpecies.commonNameES, UserSpecies.commonNameDE, UserSpecies.speciesName, UserSpecies.speciesRegion, UserSpecies.speciesDetails, UserSpecies.maxSize, UserSpecies.creditSource, UserSpecies.UserCreated, UserSpecies.genusUC, UserSpecies.familyUC, UserSpecies.orderUC, UserSpecies.groupUC, UserSpecies.subGroupUC, UserSpecies.authority, Genus.name, Family.name, Orders.name, Groups.name, SubGroups.name, Types.name, IUCN.name 
FROM UserSpecies 
INNER JOIN Genus ON UserSpecies.genusKey = Genus.id 
INNER JOIN Family ON UserSpecies.familyKey = Family.id 
INNER JOIN Orders ON UserSpecies.orderKey = Orders.id 
INNER JOIN Groups ON UserSpecies.groupKey = Groups.id 
INNER JOIN SubGroups ON UserSpecies.subGroupKey = SubGroups.id 
INNER JOIN Types ON UserSpecies.typeKey = Types.id 
INNER JOIN IUCN ON UserSpecies.iucnKey = IUCN.id 
WHERE UserSpecies.id = %d"
当我运行上面的程序时,我没有得到任何错误,但它只是不检索数据

注:所有表格和列均正确


我缺少什么?

数据库中可能缺少信息

仅当与联接表存在一个或多个匹配项时,内部联接语句才会检索数据

在您的情况下,这意味着如果某个联接表Genus、Family等中缺少某些数据。。你不会得到任何结果的。 例如,如果族表中没有id=UserSpecies.familyKey的族,则不会获得任何数据

您可以尝试使用左连接而不是内部连接:即使没有匹配项,也会返回结果。在这种情况下,相应的值将为null:如果没有匹配的族,则Family.name的值将为null。通过此修改后的请求,您将很容易发现丢失的数据(如果有):

"SELECT UserSpecies.commonName, UserSpecies.commonNameFR, UserSpecies.commonNameES, UserSpecies.commonNameDE, UserSpecies.speciesName, UserSpecies.speciesRegion, UserSpecies.speciesDetails, UserSpecies.maxSize, UserSpecies.creditSource, UserSpecies.UserCreated, UserSpecies.genusUC, UserSpecies.familyUC, UserSpecies.orderUC, UserSpecies.groupUC, UserSpecies.subGroupUC, UserSpecies.authority, Genus.name, Family.name, Orders.name, Groups.name, SubGroups.name, Types.name, IUCN.name 
FROM UserSpecies 
LEFT JOIN Genus ON UserSpecies.genusKey = Genus.id 
LEFT JOIN Family ON UserSpecies.familyKey = Family.id 
LEFT JOIN Orders ON UserSpecies.orderKey = Orders.id 
LEFT JOIN Groups ON UserSpecies.groupKey = Groups.id 
LEFT JOIN SubGroups ON UserSpecies.subGroupKey = SubGroups.id 
LEFT JOIN Types ON UserSpecies.typeKey = Types.id 
LEFT JOIN IUCN ON UserSpecies.iucnKey = IUCN.id 
WHERE UserSpecies.id = %d"
如果您想了解join关键字不同风格的更多详细信息,可以查看以下内容:


小心点:sqlite只支持连接操作的一个子集。

您是从python使用它的吗?尝试使用特定id在sqlite控制台中执行此操作。请提供一些示例数据和所需的输出。查看如何添加一些。谢谢,我按照您的建议做了,并发现了错误。