Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
SQLite:对左连接的限制_Sqlite_Join_Subquery_Left Join - Fatal编程技术网

SQLite:对左连接的限制

SQLite:对左连接的限制,sqlite,join,subquery,left-join,Sqlite,Join,Subquery,Left Join,我在一个SQLite文件中有两个表,其组织如下: 包含节点名称的tNode tItem,其中包含名称、优先级和对其父节点的引用。一个节点可以有多个项目 要列出节点及其项,我只需进行一个简单的连接查询: SELECT tNode.node, ..., tItem.itemName, tItem.itemPriority, ... FROM tNode LEFT JOIN tItem ON tItem.node=tNode.node ORDER BY tNode.node 但是现在我想要包含该

我在一个SQLite文件中有两个表,其组织如下:

  • 包含节点名称的tNode
  • tItem,其中包含名称、优先级和对其父节点的引用。一个节点可以有多个项目
要列出节点及其项,我只需进行一个简单的连接查询:

SELECT tNode.node, ..., tItem.itemName, tItem.itemPriority, ...
FROM tNode
LEFT JOIN tItem ON tItem.node=tNode.node
ORDER BY tNode.node
但是现在我想要包含该项的节点列表,而不考虑其优先级(列表中没有任何重复节点)。我想我可以使用以下查询:

SELECT tNode.node, ..., tItem2.itemName, tItem2.itemPriority, ...
FROM tNode
LEFT JOIN
  (SELECT itemName,itemPriority FROM tItem WHERE tItem.node=tNode.node LIMIT 1)
AS tItem2 ON tItem2.node=tNode.node
ORDER BY tNode.node
但这不起作用(“没有这样的列:tNode.node”)。似乎我无法在子查询中使用tNode.node列


如何在不必对每列进行一个子查询的情况下实现这一点?

删除子查询中的where子句后,尝试使用min限制和添加group by

SELECT tNode.node, ..., tItem2.itemName, tItem2.itemPriority
FROM tNode
LEFT JOIN
  (SELECT itemName,min(itemPriority) as min_priority FROM tItem GROUP BY tItem.node)
AS tItem2 ON tItem2.node=tNode.node
ORDER BY tNode.node

我已经尝试过了,但它不起作用,因为子查询中的LIMIT 1不会返回tItem.node与tNode.node匹配的行。结果查询返回一个没有项目数据的节点列表(只有一个除外)。您的子查询将返回1个结果(截止日期),然后它将加入。仅产生1个结果。请删除限制并改用group by。请稍候,我正在编辑答案,然后重试。此操作有效,但我需要从iItem表中获取其他列。此外,我需要从子查询返回一行,而不管其优先级如何。