0

各医師の利用可能な時間を表示する必要がありますが、私のコードは何も返しません ここに私のコードがあります:

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

テーブルの説明です

+------+--------------+------+-----+----- --+---------+
| | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ |
+------+--------------+------+-----+----- --+---------+
| | ID | int(11) | いいえ | PRI | ヌル | | |
| | 名前 | varchar(100) | いいえ | | | ヌル | | |
| | CRM | varchar(20) | いいえ | | | ヌル | | |
| | 電話 | varchar(10) | はい | | | ヌル | | |
| | セル | varchar(10) | はい | | | ヌル | | |
| | RG | varchar(40) | はい | | | ヌル | | |
| | CPF | varchar(50) | はい | | | ヌル | | |
| | 通り | varchar(120) | はい | | | ヌル | | |
| | 番号 | varchar(7) | はい | | | ヌル | | |
| | バイロ | varchar(40) | はい | | | ヌル | | |
| | 都市 | varchar(70) | はい | | | ヌル | | |
| | zip | varchar(13) | はい | | | ヌル | | |
| | データナスク | varchar(20) | はい | | | ヌル | | |
| | 特技 | varchar(100) | はい | | | ヌル | | |
+------+--------------+------+-----+----- --+---------+
4

2 に答える 2

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;

これにより、未使用のスロットがすべて取得されます。

于 2013-08-24T22:38:10.237 に答える