Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要帮助思考两个表上的半复杂查询吗_Mysql_Sql_Select - Fatal编程技术网

Mysql 需要帮助思考两个表上的半复杂查询吗

Mysql 需要帮助思考两个表上的半复杂查询吗,mysql,sql,select,Mysql,Sql,Select,我有两个表,我想创建一个SELECT,根据另一个表中的多条记录从一个表中提取一条记录 如果我只举一个例子,也许会更清楚 表格:日期。字段:dosID、personID、name、dateIn 1 | 10 | john smith | 2013-09-05 2 | 10 | john smith | 2013-01-25 表格:卡片。字段:cardID、personID、cardColor、cardDate 1 | 10 | red | 2013-09-05 2 | 10 | orang

我有两个表,我想创建一个SELECT,根据另一个表中的多条记录从一个表中提取一条记录

如果我只举一个例子,也许会更清楚

表格:日期。字段:dosID、personID、name、dateIn

1 | 10 | john smith | 2013-09-05
2 | 10 | john smith | 2013-01-25
表格:卡片。字段:cardID、personID、cardColor、cardDate

1 | 10 | red    | 2013-09-05
2 | 10 | orange | 2013-09-05
3 | 10 | black  | 2013-09-05
4 | 10 | green  | 2013-01-25
5 | 10 | orange | 2013-01-25
所以我想要的是,如果一个人没有收到“红色”卡片,那么只从dates表中选择一条记录。最接近我的是:

SELECT name, dateIn FROM dates, cards 
WHERE dates.personID = cards.personID AND cardColor != 'red' AND dateIn = cardDate;
但对于这一查询,2013-09-05的服务日期仍将被取消,因为当天给出了“橙色”和“黑色”卡片


我尝试过搜索,但我甚至不知道如何正确描述这个问题,所以我的谷歌fu让我失望。任何帮助或建议都将不胜感激。

最容易理解的版本将使用
不存在进行过滤。

SELECT name, dateIn
FROM   dates
WHERE  NOT EXISTS(
         SELECT *
         FROM   cards
         WHERE  cards.personID = dates.personID
            AND cards.cardDate = dates.dateIn
            AND cards.cardColor = 'red'
       )

请继续观看。

我有点困惑,您将返回非红色的2013-09-05行

我尝试使用内部连接(正如您所写的)和外部连接。同样的结果

编辑: 对不起,误解了你的帖子。
eggyal的答案在我看来似乎是个赢家。

上面的查询有什么问题吗?基本上,如果一个人那天被发给了“红牌”,我根本不希望“日期”表中的日期出现,但我当前的select查询将输出9月5日3个日期中的2个,而只需忽略带有“红牌”的日期。我想要的是从9月5日起没有记录显示是否有红牌…听起来你想要这个人想要的。看看你是否能适应这个:@Steve需要花更多的时间看这个-谢谢!尝试了你的代码,这似乎是工作!我想我需要多读一些关于不存在的东西,因为我很难准确地理解它,但是你给了我一个很好的方向!非常感谢。@user2573020:请参阅