Mysql 在多个表中操作的sql语句中使用或

Mysql 在多个表中操作的sql语句中使用或,mysql,sql,Mysql,Sql,问题: Select Table_Session.Day,Table_Session.Am_Pm,Table_Session.SessionId From Table_Session,Table_Booked Where Table_Booked.Username = 'G9rpenman' and ((Table_Booked.SessionID = Table_Session.SessionId) Or (Table_Session.SessionId = 9)) 我有两个表,我正在从

问题:

Select Table_Session.Day,Table_Session.Am_Pm,Table_Session.SessionId
From Table_Session,Table_Booked
Where Table_Booked.Username = 'G9rpenman' and  
((Table_Booked.SessionID = Table_Session.SessionId) Or (Table_Session.SessionId = 9))
我有两个表,我正在从一个名为Table_Booked的表中选择数据,该表包含一条记录,每次用户预订时都有用户名和会话ID,另一个名为Table_Sessions的表中包含会话详细信息,如会话ID、主题、教师ID、日期、上午/下午和其他内容

我正在尝试从表_Booked中选择所有记录,其中用户名与当前用户相同,并且我还希望获得用户已预订的每个会话的Day&Am_Pm数据或他尝试预订的会话的记录。目的是比较记录,如果在同一时间段内发生任何记录,则不允许用户预订会话

代码:

Select Table_Session.Day,Table_Session.Am_Pm,Table_Session.SessionId
From Table_Session,Table_Booked
Where Table_Booked.Username = 'G9rpenman' and  
((Table_Booked.SessionID = Table_Session.SessionId) Or (Table_Session.SessionId = 9))
当我运行这段代码时,它两次从表_Session.SessionId=9中获取信息,其他调整也导致了类似的随机数据选择。我找不到关于这个的任何东西。谢谢你的帮助。如果您觉得我遗漏了任何重要信息,请告诉我,我会编辑此内容


下面是一些我的表格的截图,其中包含im使用的数据。为什么不尝试使用JOIN语句,而不是按照您的方式从两个表格中进行选择

以下查询的输出是什么:

SELECT
  TS.Day
  ,TS.Am_Pm
  ,TS.SessionId
FROM Table_Session TS
INNER JOIN Table_Booked TB ON TS.SessionId = TB.SessionID
   OR TS.SessionId = 9
WHERE TB.Username = 'G9rpenman'
您能发布两个表中的一些示例数据吗?这样我们就可以看到您试图比较什么以提供更多帮助了?

简单规则:切勿在
from
子句中使用逗号。始终使用显式
JOIN
语法

重复的原因是
。我想这会满足你的要求:

Select s.Day, s.Am_Pm, s.SessionId
From Table_Booked b join
     Table_Session s 
     on s.SessionID = b.SessionId or s.SessionId = 9
Where b.Username = 'G9rpenman' ;
如果没有,您可能需要
联合

Select s.Day, s.Am_Pm, s.SessionId
From Table_Booked b join
     Table_Session s 
     on s.SessionID = b.SessionId
Where b.Username = 'G9rpenman' 
union
Select s.Day, s.Am_Pm, s.SessionId
from Table_Session s
where s.SessionId = 9;

样本数据和期望的结果将有助于传达您想要做的事情。问题是什么?重复记录意味着有两个会话对应于预定的表记录。添加要查看的AM/PM字段。正如您所提到的,您希望检索所有预订的和相关的会话。在记录中没有重复。每个SessionID都是一个autonum,因此是唯一的,在预订表中没有SessionID 9,所以它唯一的来源是table_Session,其中只有一个实例,这让我觉得出于某种原因,数据在重复。我添加了一些表的屏幕截图,如果这有帮助的话,我不知道您想要的格式是什么中的示例数据。非常感谢您的帮助。这两个选项都会在from子句中返回一个错误并突出显示join语法。
from
子句没有明显的错误。在我看来,它像是标准的SQL。