SQL 左连接 - 右表中的多行

米利安·伊利奇

我正在尝试制作 PHP/MySQL 搜索表单。当用户想要搜索时,他需要填写 3 个输入字段:FromDateToDateSucategoryID

有 2 个表:Items 和 ItemsBlockDates在 Table Items 中,有关于该项目的信息,它由 ID 标识。在表 ItemBlockDates 中,有关于 Item 不会显示在搜索结果中的时间段的信息。它包含:ItemID、FromDateDate字段。此外,还可以为一个项目定义多个阻止日期。

现在,我想选择 FromDate 和 To Date 输入与具有相同 ItemID 的 ItemsBlockDates 中的任何行不匹配的所有项目。

我写了一个查询,但是有一个问题:

SELECT * 
FROM Items 
LEFT JOIN ItemBlockDates ON Items.ID = ItemBlockDates.ItemID 
WHERE Items.SubcategoryID = :SubcategoryID   
  AND ItemBlockDates.FromDate NOT BETWEEN CAST(:FromDate AS DATETIME) AND CAST(:ToDate AS DATETIME)

当我运行此查询时,它不会显示未设置阻止日期的项目,它还显示设置了多个阻止日期的项目。

戈登·利诺夫

我想选择 FromDate 和 To Date 输入与ItemsBlockDates具有相同 ItemID 的任何行不匹配的所有项目

对我来说,这表明NOT EXISTS

SELECT i.* 
FROM Items i
WHERE i.SubcategoryID = :SubcategoryID AND
      NOT EXISTS (SELECT 1
                  FROM ItemBlockDates ibd
                  WHERE i.ID = ibd.ItemID AND
                        ibd.FromDate BETWEEN CAST(:FromDate AS DATETIME) AND CAST(:ToDate AS DATETIME)
                 );

如果您传入参数,我不确定为什么需要转换为DATETIME. 您应该能够以正确的类型传递它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

SQL左连接-右表中的固定值

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

(My)SQL左/右/内连接的方向

来自分类Dev

(My)SQL左/右/内连接的方向

来自分类Dev

SQL左连接在单个表上

来自分类Dev

左连接表SQL的UPDATE SUM

来自分类Dev

SQL Server 左连接未从左表返回预期记录

来自分类Dev

SQL连接到表中的多行

来自分类Dev

左连接与右表中的位置

来自分类Dev

Mysql左连接,条件在右表中

来自分类Dev

SQL左连接奇数

来自分类Dev

SQL左外连接具有三个表

来自分类Dev

SAS 中的 SQL:尝试通过左连接计算零值

来自分类Dev

Laravel 查询生成器中的 SQL 左连接错误

来自分类Dev

我想用来从SQL Server的右表中找不到的左表中获取行的联接

来自分类Dev

SQL 两个左连接只产生第一个表中的数据

来自分类Dev

为什么左外连接对 SQL 表中不同类型的属性不起作用?

来自分类Dev

左外连接SQL查询

来自分类Dev

简单的左连接 SQL 语法

来自分类Dev

SQL Server 左连接计数

来自分类Dev

SQL 左连接多列

来自分类Dev

Impala SQL 左反连接

来自分类Dev

SQL 左连接 case 语句

来自分类Dev

在 Postgres 中左连接

来自分类Dev

SQL帮助内连接左连接

来自分类Dev

sql嵌套连接内部和左连接

来自分类Dev

SQL帮助内连接左连接

来自分类Dev

mysql左连接/右连接3个表