【问题标题】:Difference between using AND and OR [closed]使用 AND 和 OR 之间的区别 [关闭]
【发布时间】:2018-05-02 20:10:39
【问题描述】:

我有 4 个表 Participation,Lecturer_info,ScientificEvaluator,commision 每个表都有一个外键到 Lecturer_info 我想搜索讲师并显示所有表格中的所有值

当我将“和”更改为“或”时,此选择不会返回任何内容。 它返回随机值:

SELECT  Lecturer_Name, com_name ,Sicn_name ,Names_Of_Participations , pdf1 , pdf2,pdf3 
FROM Participation,Lecturer_info,ScientificEvaluator,commision  
where lecturer_fk = Lecturer_id and com_id = part_id  and Sicn_id = part_id 
    and Lecturer_Name = '% %' 

【问题讨论】:

  • 请添加示例数据和预期结果。另外,“随机名称”是什么意思?
  • 如果您提供minimal, complete, and verifiable example (MVCE),您将获得更好的答案。如果没有代码和示例数据,Stack Overflow 社区就很难为您提供帮助。此外,我们无法判断您的WHERE 子句中提到的列来自哪些表,因此我们无法弄清楚您在做什么。
  • 到目前为止最大的问题是你的连接语法。当您拥有 AND 时,那些过时的连接就是内部连接。当您将它们更改为 OR 时,您已经完全破坏了连接逻辑。修复您的联接,这可能不再是问题。 sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/…
  • 此外,您应该使用别名并始终在查询中指定列属于哪个表。由于我们不知道您的数据库,因此不可能知道哪个列与哪个表对应。我还建议你不要做像讲师_fk这样的事情。它仍然是讲师 ID,只是在不同的表中作为外键。
  • @squillman 这意味着返回了许多随机值

标签: sql-server vb.net


【解决方案1】:

使用正确的连接和一些格式,您的查询可能看起来像这样。

SELECT l.Lecturer_Name
    , c.com_name 
    , se.Sicn_name 
    , p.Names_Of_Participations
    , pdf1
    , pdf2
    , pdf3
FROM Participation p
join Lecturer_info l on p.lecturer_fk = l.Lecturer_id
join ScientificEvaluator se on se.Sicn_id = p.part_id
join commision c on c.com_id = p.part_id
where l.Lecturer_Name = '% %'

但是你真的有名字是 % % 的讲师吗?也许您正在尝试查找名称中带有空格的讲师姓名?那将是 LIKE 而不是 =

如果这个查询不能直接运行,那是因为我在编码盲。

【讨论】:

  • 它不起作用,先生没有任何回报
  • 我再次在黑暗中编码。我无权访问您的任何表格,也不知道您要做什么。我将从删除 where 子句开始。然后评估连接。他们是正确的吗?也许您想要左连接而不是内连接?
  • 先生,我有 4 个表有一个指向讲师信息的外键我想从讲师信息中搜索讲师并显示每个表格的值
【解决方案2】:

AND 和 OR 运算符用于根据多个条件过滤记录:

如果由 AND 分隔的所有条件都为 TRUE,则 AND 运算符会显示一条记录。 如果由 OR 分隔的任何条件为 TRUE,则 OR 运算符将显示一条记录。

【讨论】:

  • 先生,我已经编辑了我的问题,请回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多