1

全部,

我正在尝试配对由共同祖父母记录链接的两个或多个记录。

在我运行查询时,我只会知道元组/对中的一条记录。因此我需要使用这个子记录来导航到祖父母记录。然后,我需要从祖父母记录中找到所有其他孙子记录。

这是一个相当粗略的结构图 在此处输入图像描述

到目前为止,在我的查询中,我可以找到祖父母记录,但我不知道从那时起该怎么做才能找到所有其他孙子

SELECT * FROM TABLE A
WHERE CREATED_DATE = sysdate
JOIN TABLE B
ON TABLE A.parent_row = TABLE B.row_id
JOIN TABLE C
//Grandparent table
ON TABLE B.parent_row = TABLE C.row_id

如果有更好的方法来做到这一点?我在这个查询中唯一的主要过滤器是我正在搜索今天在表 A 中创建的记录。

谢谢

4

1 回答 1

2

首先,您的查询无效。where 子句出现在连接之后:

SELECT * 
FROM TABLE A
    JOIN TABLE B ON TABLE A.parent_row = TABLE B.row_id
    JOIN TABLE C ON TABLE B.parent_row = TABLE C.row_id
WHERE CREATED_DATE = sysdate;

其次,您没有按您显然已经拥有的孙子进行过滤。在这个查询中,我使用YOUR_ID变量来表示它:

SELECT * 
FROM TABLE A
    JOIN TABLE B ON TABLE A.parent_row = TABLE B.row_id
    JOIN TABLE C ON TABLE B.parent_row = TABLE C.row_id
WHERE 
    CREATED_DATE = sysdate
AND TABLE A.row_id = YOUR_ID;

第三,现在我们检索了祖父母(表 C.row_id),我们可以按照相同的逻辑再次加入表 B(BB)和 A(AA)以获取所有孙子:

SELECT TABLE AA.row_id  /* ids of all grand children. YOUR_ID should be included */
FROM TABLE A
    JOIN TABLE B ON TABLE A.parent_row = TABLE B.row_id
    JOIN TABLE C ON TABLE B.parent_row = TABLE C.row_id
    /* join over on table B then table A to get all grand children */
    JOIN TABLE BB ON TABLE BB.parent_row = TABLE C.row_id
    JOIN TABLE AA ON TABLE AA.parent_row = TABLE BB.row_id
WHERE 
    CREATED_DATE = sysdate
AND TABLE A.row_id = YOUR_ID;
于 2013-10-09T09:37:15.267 回答