【发布时间】:2021-04-27 02:22:32
【问题描述】:
我正在编写一个网站,作为为亲人寻找献血者和自愿献血者之间的桥梁。
为了让注册的献血者预约献血,他们应该首先打开一个“献血页面”,在那里他们可以找到可以献血的患者。
我希望页面显示以下献血请求:
- 捐赠者尚未预约捐赠对象
- 尚未为他们设置任何献血预约。
这是我的第一张表:献血请求。用户在网站上提出的所有献血请求都会在这里(AcquirerID是指为患者提出献血请求的用户的用户ID)
| Name | Type | Collation | Null | Default |
| ----------------| -------------- |--------------------|------|---------|
| patientID (FK) | int(11) | | | |
| acquirerID (FK) | int(11) | | | |
| requestID (PK) | varchar(255) | utf8mb4_general_ci | No | None |
| datePosted | date | | No | None |
| approved |tinyint(1) | | No | 0 |
| archived |tinyint(1) | | No | 0 |
这是我的第二张桌子,tblappointments。这是该网站的注册捐助者进行的所有约会的地方
| Name | Type |Collation |Null |Default| Extra|
|---------------------|------------|-------------------|--------|-------|--------|
| id (PK) |int(11) | | No | None |AUTO_INCREMENT
| healthCenterID (FK) |int(11) | | No | None |
|donorID (FK) |int(11) | | No | None |
|patientID (FK) |int(11) | | No | None |
|donationRequestID(FK)|varchar(255)|utf8mb4_general_ci | No | None |
|apptDate |date | | No | None |
|timeSlotID (FK) |int(11) | | No | None |
|confirmed |tinyint(1) | | No | 0 |
|completed |tinyint(1) | | No | 0 |
这是我尝试的第一个查询
SELECT request.patientID FROM blooddonationrequest as request
LEFT JOIN tblappointment as appt ON appt.donationRequestID = request.requestID
WHERE appt.donationRequestID IS NULL
它成功返回了所有没有预约的献血请求,但是已经有其他献血者预约的献血请求,但没有当前登录的献血者呢?这就是我的挣扎
我对 SQL 代码进行了多次试验和错误,但未能记录和保存,但大多只是对上述 SQL 的修改。我拼命地尝试在查询中包含and appt.donorID != $_SESSION['userID'] 之类的内容,但当然这不起作用。
那么,我应该使用哪些查询?
【问题讨论】: