【问题标题】:Select command doesn't return anything选择命令不返回任何内容
【发布时间】:2013-08-27 17:51:25
【问题描述】:

我需要显示每位医生的可用时间,但我的代码没有返回任何内容 这是我的代码:

SELECT DISTINCT Hours
FROM agenda_hours, doctor
WHERE Agenda_Hours.idHours NOT IN (SELECT DISTINCT appoitment_hour.Hour FROM appoitment_hour)
AND Doctor.Name IN (SELECT Doctor.Name FROM Doctor Where name = "Name");

这是表格的描述

+---------------+--------------+------+-----+----- ----+-------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +---------------+--------------+------+-----+----- ----+-------+ |编号 |整数(11) |否 |优先级 |空 | | |姓名 | varchar(100) |否 | |空 | | |客户关系管理 | varchar(20) |否 | |空 | | |电话 | varchar(10) |是 | |空 | | |细胞 | varchar(10) |是 | |空 | | | RG | varchar(40) |是 | |空 | | |公积金 | varchar(50) |是 | |空 | | |街道 | varchar(120) |是 | |空 | | |编号 | varchar(7) |是 | |空 | | |拜罗 | varchar(40) |是 | |空 | | |城市| varchar(70) |是 | |空 | | |拉链 | varchar(13) |是 | |空 | | |数据库 | varchar(20) |是 | |空 | | |特产 | varchar(100) |是 | |空 | | +---------------+--------------+------+-----+----- ----+-------+

【问题讨论】:

  • 如果没有看到任何实际数据,我们将无法帮助您
  • 也许尝试将appoitment_hour 更改为appointment_hour?

标签: mysql sql


【解决方案1】:

您的查询在小时数和医生之间进行交叉连接,然后查找不在小时数列表中的小时数。当然它不会返回任何东西。

我想你想要这样的东西:

select DoctorHour.*
from (select d.Name, a.hour
      from Doctor d cross join
           (select distinct hour from Appointment) a
     ) DoctorHour left outer join
     Appointment a
     on a.name = DoctorHour.name and
        a.hour = DoctorHour.hour
where a.name is null;

这将为您提供所有未使用的插槽。

【讨论】:

    【解决方案2】:

    除了查询的正确性(或不正确性)之外,您还有一些错误。

    您参考了agenda_hours 和Agenda_Hours 表之一,这可能会导致错误。根据MySQL docs:

    虽然数据库和表名在某些情况下不区分大小写 平台,您不应该使用 同一语句中的不同情况。以下声明 将不起作用,因为它同时将表引用为 my_table 和 MY_TABLE:

    mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;

    另外,您的字段appoitment_hour 似乎有错字。它应该可能是appointment_hour。因此,您可能会收到“未知列”错误。

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2018-08-13
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多