我想知道我该如何假设这些问题实际上是在问什么?
问题的一部分
没有项目的客户应该是 显示,但没有的项目 有一个开始日期和项目 没有结束日期不应该 显示
答案
mysql> SELECT -> c.name AS CLIENT, p.name AS PROJECT, -> p.start AS START, p.end AS END -> FROM client AS c -> LEFT JOIN project AS p -> USING (cid) /* or: ON c.cid = p.cid */ -> WHERE p.start IS NOT NULL -> AND p.end IS NOT NULL -> ORDER BY c.name ASC, p.start ASC -> ;
我认为根据答案,这个问题应该被称为“没有开始和结束日期的项目”,而不是“...和那些......的项目”似乎意味着排除没有项目的项目开始或结束日期?还是只有我?
更新:
mysql> select c.name, p.name, p.start, p.end -> from client c left join project p -> using (cid); +------------+--------------+------------+------------+ | name | name | start | end | +------------+--------------+------------+------------+ | Seamen's | Intranet | NULL | NULL | | Lennart AG | New CMS | 2003-01-00 | 2003-05-00 | | Lennart AG | Intranet | 2009-02-00 | NULL | | MySQL AB | Texi2XML | 2002-04-00 | 2003-09-00 | | MySQL AB | Study Guides | 2002-09-00 | 2003-03-30 | | Icoaten | PDC Server | 2003-01-00 | 2003-01-00 | | Icoaten | SMB Server | 2003-05-00 | NULL | | Icoaten | WLAN | NULL | 2003-08-00 | | Nittboad | NULL | NULL | NULL | +------------+--------------+------------+------------+ 9 rows in set (0.04 sec) mysql> select c.name, p.name, p.start, p.end -> from client c left join project p -> using (cid) -> where p.start is not null -> and p.end is not null; +------------+--------------+------------+------------+ | name | name | start | end | +------------+--------------+------------+------------+ | Lennart AG | New CMS | 2003-01-00 | 2003-05-00 | | MySQL AB | Texi2XML | 2002-04-00 | 2003-09-00 | | MySQL AB | Study Guides | 2002-09-00 | 2003-03-30 | | Icoaten | PDC Server | 2003-01-00 | 2003-01-00 | +------------+--------------+------------+------------+ 4 rows in set (0.00 sec) mysql> select c.name, p.name, p.start, p.end -> from client c left join project p -> using (cid) -> where p.start is not null -> or p.end is not null ; +------------+--------------+------------+------------+ | name | name | start | end | +------------+--------------+------------+------------+ | Lennart AG | New CMS | 2003-01-00 | 2003-05-00 | | Lennart AG | Intranet | 2009-02-00 | NULL | | MySQL AB | Texi2XML | 2002-04-00 | 2003-09-00 | | MySQL AB | Study Guides | 2002-09-00 | 2003-03-30 | | Icoaten | PDC Server | 2003-01-00 | 2003-01-00 | | Icoaten | SMB Server | 2003-05-00 | NULL | | Icoaten | WLAN | NULL | 2003-08-00 | +------------+--------------+------------+------------+ 7 rows in set (0.00 sec)
更新3:
“没有开始的项目 结束日期“正在寻找这两个领域 以数学方式丢失:启动IS NULL AND End IS NULL。
“没有开始日期的项目 和没有结束的项目 日期“就像你说的那样,真的是”或“ (启动IS NULL或结束IS NULL)。注意: 这相当于“NOT(开始IS NOT NULL AND End IS NOT NULL)“。
答案 0 :(得分:0)
WHERE p.start IS NOT NULL
AND p.end IS NOT NULL
排除了两种情况。因此,排除没有开始日期的项目,以及没有结束日期的项目。当然,也没有开始日期和结束日期的项目。
他们的措辞,至少对我而言,非常明确地指明了这种行为。
但请注意,他们的答案还有另一个问题:不会显示具有一个项目但是一个项目缺少开始日期或结束日期(或两者)的客户端。糟糕。
关于英语的问题正朝着offtopic方向发展,但我将这些句子读作:
应该显示没有项目的客户,但是(没有项目的项目) 有一个开始日期)和(没有结束日期的项目)不应该 显示。
换句话说,作为两项清单。在语法上与:
相同不应显示没有项目的客户,但不应显示Seamen和MySQL AB。
请注意,显然意味着如果客户端的名称是Seamen,或者如果其名称是MySQL AB,则不应显示客户端,而不是如果客户端的名称是两者都不应显示客户端。