【问题标题】:No results from Join in Database?加入数据库没有结果?
【发布时间】:2010-11-01 16:09:13
【问题描述】:

我想加入两个表来获取医生姓名而不是 ID

SELECT Doctors.doct_name,
       Shifts.shift_date,
       Shifts.shift_day,
       Shifts.shift_start,
       Shifts.shift_end
  FROM SHIFTS 
  JOIN Doctors ON Doctors.doct_id = Shifts.doct_id

列显示但没有任何结果,数据库中没有数据?

【问题讨论】:

  • 检查SHIFTS 表 - 我猜你没有任何与DOCTORS.doct_id 匹配的doct_id 值。
  • 这两个表中有数据吗?

标签: c# sql sql-server-2005


【解决方案1】:

您的查询看起来没问题。

尝试两个单独的查询来验证基本数据:

select * from Doctors order by doct_id;

select * from Shifts order by doct_id;

看看你是否可以手动发现数据问题:

【讨论】:

  • +1 以获得理智的答案。 OP 应该做的第一步是弄清楚她/他有什么数据。
【解决方案2】:

试试LEFT JOIN

SELECT Doctors.doct_name,Shifts.shift_date,Shifts.shift_day,Shifts.shift_start,Shifts.shift_end
  FROM SHIFTS 
  LEFT JOIN Doctors ON Doctors.doct_id = Shifts.doct_id

【讨论】:

  • 这只会显示 SHIFT 值 - 根据提供的信息,我希望 DOCTORS 引用都为 NULL。
  • 我检查后还是同样的问题?
  • 我的猜测是,至少将连接强制向左,可以清楚地查看数据库中的数据,这将进一步帮助 OP。
  • @Omneya - 这真的取决于数据,如果没有这些表格内容的至少一个样本,将很难进一步帮助您。
【解决方案3】:

尝试使用左连接并尝试使用带 id 的 Where 子句来检查两个表中是否真的存在 Doctors

SELECT Doctors.doct_name,Shifts.shift_date,Shifts.shift_day,Shifts.shift_start,Shifts.shift_end

从班次 LEFT JOIN Doctors ON Doctors.doct_id = Shifts.doct_id

SELECT Doctors.doct_name,Shifts.shift_date,Shifts.shift_day,Shifts.shift_start,Shifts.shift_end

从班次 LEFT JOIN Doctors ON Doctors.doct_id = Shifts.doct_id WHERE Doctors.doct_id = [在此处插入医生 ID - 医生 ID]

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2023-03-16
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多