我们有三张表:
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)