选择一个选择

时间:2013-02-01 18:47:25

标签: subquery visual-foxpro

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

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

我的SELECT语句如下

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

这给了我我想要的东西 - 现在我想要做的是从同一个文件中拉出父亲和母亲的生日状态,有没有办法动态地(在同一个选择语句中)?

2 个答案:

答案 0 :(得分: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)

如果你确定你总是拥有父亲和母亲,你或许可以将左外连接更改为内连接。

我还假设“mother”和“father”是成员表中IdNumber列的外键。

答案 1 :(得分:0)

@aquinas, 这对VFP来说不是一个好的语法。你用过m。作为当地的别名!它应该是m.ldStartDate和m.ldEndDate但是有m的其余部分。在该查询中只是一个错误的邀请(逻辑错误,一个人可能会被忽视或只有你很幸运时显示为错误)。

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

PS:如果您是一位经验丰富的开发人员,那么它可能不会咬你。但是,我认为问题的主人是初学者/中级,她/他不应该这样学习。