首页 > 解决方案 > 选择带有一些 pblm 的内部连接的查询

问题描述

SELECT DISTINCT 
    response_user, patient_name, ipno, department 
FROM 
    response 
INNER JOIN 
    patient_details ON response.response_user = patient_details.id 
INNER JOIN
    key_points ON response.response_key = key_points.kp_id
WHERE 
    department = 'CVTS' 
    AND MONTH(response_on) BETWEEN '12' AND '12' 
    AND response_key BETWEEN 146 AND 149 
    AND response_val = '5' OR response_val = '4' 
    AND kp_belongs_to = '1'  
ORDER BY
    patient_name ASC

我想要特定科室的患者姓名

标签: sql

解决方案


我建议您使用表别名并在列名之前加上这些别名,以便始终清楚哪个列属于哪个表。

虽然这是一个简单的SELECT语句(没有什么花哨的),但最好指定您使用的数据库。

说有“一些 pblm”(你的键盘坏了吗?为什么不写“问题”呢?)很难调试。运行该语句时是否有任何错误?如果有,是哪一个?

此外,如果您对编写的代码进行格式化,那就太好了;当它看起来更漂亮时,更容易发现罪魁祸首。我这样做了,并且 - 如果其他一切正常,表格正确连接等,或者可能是那个,即

SELECT DISTINCT response_user,
                patient_name,
                ipno,
                department
FROM response
INNER JOIN patient_details ON response.response_user = patient_details.id
INNER JOIN key_points ON response.response_key = key_points.kp_id
WHERE department = 'CVTS'
      AND month(response_on)BETWEEN '12' AND '12'
      AND response_key BETWEEN 146 AND 149
      AND (   response_val = '5'      --> OR condition should be enclosed
           OR response_val = '4'      --> into parenthesis
          )
      AND kp_belongs_to = '1'
ORDER BY patient_name ASC

看看有没有帮助。如果没有,请考虑遵循我为帮助我们帮助您而编写的指南。


推荐阅读