2016-11-28 78 views
0

这是一个函数,我必须从存储直接图的数据库中检索。我有一个图表,包括columsn,图表名称和graphID。以及具有列nodeid,graphid并具有exitnode和entrynode的节点表。我尝试使用count语句来计算每个图必须返回名称的节点数,但它一直返回空集。有人可以查看我的查询并告诉我我做错了什么。使用计数功能的MYSQL查询

SELECT 
    graphName 
    FROM 
    graphs 
    WHERE graphID 
    IN ( 
     SELECT 
     graphID 
     FROM 
     nodes 
     WHERE count(entryNode, exitNode) = 2 
    ); 
+0

您可能需要更加明确。 'entryNode'和'exitNode'是'graphs'或'nodes'中的一列吗? –

+0

它是一个节点中的列,图列只有graphName和graphID – Ace8

+0

从图中选择g.graphname,(从节点n中选择count(*),其中n.graphid = g.graphid)g – maraca

回答

0

您可以使用NODEID的:

SELECT g.graphName, COUNT(DISTINCT nen.nodeid), COUNT(DISTINCT nex.nodeid) 
FROM graphs g 
    JOIN nodes nen on nen.graphID = g.graphID AND nen.entryNode=1 
    JOIN nodes nex on nex.graphID = g.graphID AND nex.exitNode=1 
GROUP BY g.graphName 
HAVING COUNT(DISTINCT nen.nodeid)=2 and COUNT(DISTINCT nex.nodeid)=2