Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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_Database_Sqlite - Fatal编程技术网

SQL查询是否基于其他表列值从表中获取项目列表?

SQL查询是否基于其他表列值从表中获取项目列表?,sql,database,sqlite,Sql,Database,Sqlite,我有两张桌子: 蓝图: ID| BlueprintID| CarID 汽车: ID, Name, Color 我需要根据blueprintID获得所有汽车。 我正在使用SQLLite 谢谢您需要将一个表连接到另一个表 选择c.ID、c.Name、c.Color从车中c加入b.CarID=c.ID上的蓝图b,其中b.BlueprintID=[yourlueprintid] 我给了两个表一个别名,这使它更容易,尤其是当您有很多字段时。如果两个表中都出现了一个同名字段,而您没有使用类似c.name

我有两张桌子: 蓝图

ID| BlueprintID| CarID
汽车

ID, Name, Color
我需要根据
blueprintID
获得所有汽车。 我正在使用SQLLite


谢谢

您需要将一个表连接到另一个表

选择c.ID、c.Name、c.Color从车中c加入b.CarID=c.ID上的蓝图b,其中b.BlueprintID=[yourlueprintid]


我给了两个表一个别名,这使它更容易,尤其是当您有很多字段时。如果两个表中都出现了一个同名字段,而您没有使用类似
c.name
或Car.name`的方法指定哪个表,则会出现字段名不明确的错误

这可以通过子查询完成:

SELECT *
FROM Car
WHERE ID IN (SELECT CarID
             FROM BluePrint
             WHERE BlueprintID = ?)
或加入:

SELECT Car.*
FROM Car
JOIN BluePrint ON Car.ID = BluePrint.CarID
WHERE BlueprintID = ?

(如果一辆车可能有多个蓝图,则第二次查询需要
选择DISTINCT

选择c.*,B.车辆c的BlueprintID,蓝图B
其中C.ID=B.CarID

您尝试了什么,出现了哪些错误?您应该停止使用这些类型的连接Aaron Bertrand写了一篇很好的文章