男孩女孩和他们的父母的有趣问题

我们有三张表:

 

GIRLS有三个字段 NAME CITY AGE

BOYS有三个字段 NAME CITY AGE

PARENTS有三个字段 CHILD TYPE(FATHER or MATHER) PNAME

 

有以下几个有趣的题目:

做一个所有女孩的列表,包括他们母亲的名字和住在同一城市的男孩的名字。

 

SELECT GIRLS.NAME,PNAME,BOYS.NAME

FROM ((GIRLS JOIN PARENTS

    ON PARENTS.CHILD = NAME)

 JOIN BOYS

    ON (GIRLS.CITY = BOYS.CITY))

WHERE TYPE = "MOTHER"

(这里连个连接都是内连接,所以没有男孩住在同一城市的任何女孩或者在数据库中没有母亲数据的任何女孩将不显示在查询结果中。)

 

SELECT GIRLS.NAME,PNAME,BOYS.NAME

   FROM ((GRILS LEFT JOIN PARENTS

       ON PARENTS.CHILD = NAME)

     JOIN BOYS

       ON (GIRLS.CITY = BOYS.CITY))

 WHERE (TYPE = "MOTHER") OR (TYPE IS NULL)

(这个查询将包含所有的女孩/男孩对,不管女孩是否在数据库中有其母亲的数据,但是它将省略没有和任何男孩住在同一个城市的女孩。)

 

SELECT GIRLS.NAME,PNAME,BOYS.NAME

   FROM ((GRILS LEFT JOIN PARENTS

       ON PARENTS.CHILD = NAME)

     LEFT JOIN BOYS

       ON (GIRLS.CITY = BOYS.CITY))

 WHERE (TYPE = "MOTHER") OR (TYPE IS NULL)

(这个查询将包含说有的女孩,不管女孩是否在数据库中尤其母亲的数据,或没有任何男孩住在同一个城市。)

 

生成一个女孩/男孩列表,但是结果中包含男孩父亲的名字和女孩母亲的名字。

SELECT GIRLS.NAME,MOTHERS.PNAME,BOYS.NAME,FATHERS.PNAME

  FROM ((GIRLS LEFT JOIN PARENTS AS MOTHERS

      ON ((CHILD = GIRLS.NAME)AND TYPE = "MOTHER")))

   JOIN (BOYS LEFT JOIN PARENTS AS FATHRES

      ON ((CHILD = BOYS.NAME)AND(TYPE = "FATHER"))))

 USING (CITY)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值