0

我的数据库中有一个表,其中包含一组个人的所有记录,包括男性和女性以及他们的后代。每个记录都有那个人的出生地。

我正在尝试创建一个光标来显示特定日期范围之间的所有出生,这些日期显示个人的身份证、他们的出生日期和他们的父母。到目前为止没有问题

我的 SELECT 语句如下

SELECT DISTINCT IdNumber,birthstate, sex, DateOfBirth, father, mother;
FROM members;
WHERE (DateOfDeath>=ldStartDate AND DateOfDeath<=ldEndDate);
ORDER BY 1;
INTO CURSOR ReportMaster

这正是我想要的——现在我想做的是从同一个文件中提取父亲和母亲的出生状态,有没有办法动态地(在同一个 select 语句中)?

4

2 回答 2

2
    SELECT DISTINCT m.IdNumber,m.birthstate, m.sex, m.DateOfBirth, m.father, m.mother,
    mother.birthstate, father.birthsate
    FROM members m
    left outer join members mother on mother.IdNumber = m.mother 
    left outer join members father on father.IdNumber = m.father
    WHERE (m.DateOfDeath>=ldStartDate AND m.DateOfDeath<=ldEndDate)

如果您确定您始终拥有父亲和母亲,您也许可以将左外部联接更改为内部联接。

我还假设“母亲”和“父亲”是成员表中 IdNumber 列的外键。

于 2013-02-01T18:53:02.100 回答
0

@aquinas,这不是 VFP 的好语法。你用过m。作为本地别名!它应该是 m.ldStartDate 和 m.ldEndDate 但有其余的 m。在那个查询中只是一个错误的邀请(逻辑错误,一个可能会被忽视或只有在你幸运的情况下才会显示为错误)。

请预留米。用于内存变量。mdot 在此查询中以这种方式工作只是一个永远不会被纠正的错误。

PS:如果您是经验丰富的开发人员,那么它可能不会咬您。但是,我认为问题的所有者是初学者/中级,她/他不应该以这种方式学习。

于 2013-02-21T14:41:15.737 回答