选择命令不返回任何内容

时间:2013-08-24 22:33:54

标签: mysql sql

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

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");

这是表格的描述

+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| id            | int(11)      | NO   | PRI | NULL    |       |
| Name          | varchar(100) | NO   |     | NULL    |       |
| CRM           | varchar(20)  | NO   |     | NULL    |       |
| Tel           | varchar(10)  | YES  |     | NULL    |       |
| Cel           | varchar(10)  | YES  |     | NULL    |       |
| RG            | varchar(40)  | YES  |     | NULL    |       |
| CPF           | varchar(50)  | YES  |     | NULL    |       |
| Street        | varchar(120) | YES  |     | NULL    |       |
| num           | varchar(7)   | YES  |     | NULL    |       |
| bairro        | varchar(40)  | YES  |     | NULL    |       |
| city          | varchar(70)  | YES  |     | NULL    |       |
| zip           | varchar(13)  | YES  |     | NULL    |       |
| datanasc      | varchar(20)  | YES  |     | NULL    |       |
| Especiality   | varchar(100) | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+

2 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:0)

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

您引用其中一个表agenda_hoursAgenda_Hours,这可能会导致错误。根据{{​​3}}:

  

虽然数据库和表名在某些情况下不区分大小写   平台,您不应该使用给定的数据库或表   同一陈述中的不同案例。以下声明   将无法正常工作,因为它将表引用为my_table和。{   MY_TABLE

     

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

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