我正在试图弄清楚如何显示从WHERE子句中排除的所有值,而不是那些由以下选择的值:
class Post {
String id,
User user,
List<Comments> comments
}
此查询返回的值是首先匹配“工作标题”的值,然后是表2中该日期中存在的值。我要显示的是基于“工作标题”的所有其他值,不包括那些该特定日期的值。基本上我需要弄清楚如何根据此查询知道在特定日期谁是免费的。
感谢您的帮助
答案 0 :(得分:1)
你可以修改你的查询并像这样设置inverse where子句,得到与'work title'不匹配的行OR(这很重要)与table2中的日期requeriment不匹配的行: / p>
$pdo = $service->pdo;
$sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
FROM table1 a
INNER JOIN table2 b on b.id = a.id
WHERE a.job <> '{$job}'
OR
STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
GROUP BY a.id ";
return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);
修改强>
阅读完你的评论之后,我发现你不需要你的查询已经识别过的傻瓜,你需要与第一个讽刺相匹配的行,而不是第二个。所以你需要这样:
$pdo = $service->pdo;
$sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
FROM table1 a
INNER JOIN table2 b on b.id = a.id
WHERE a.job = '{$job}'
AND
STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
GROUP BY a.id ";
return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);