0

次のように編成された SQLite ファイルに 2 つのテーブルがあります。

  • ノード名を含むtNode
  • 名前、優先度、およびその親ノードへの参照を含むtItem 。ノードには複数のアイテムを含めることができます。

ノードとその項目を一覧表示するには、単純な JOIN クエリを作成するだけです。

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 列を使用できないようです。

列ごとに 1 つのサブクエリを作成せずにこれを達成するにはどうすればよいですか?

4

1 に答える 1

2

サブクエリのwhere句を削除した後、LIMITも削除し、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
于 2012-08-06T09:44:12.303 に答える