如何使mysql中的多个表之间的连接工作
我有三个表,病人集,用户和地图病人集用户。我正在尝试在单个查询中在patient_集和user以及patient_集和map_patient_集和user之间进行内部连接。查询应返回给定用户是其创建者或护理协调员的所有患者集合。但是,如果患者集具有所需的权限(在map_patient_set_user中指定),也可以返回患者集。下面的查询只从map_patient_set_用户返回数据,并忽略patient_set和user之间的连接。实现此联接的正确方法应该是什么如何使mysql中的多个表之间的连接工作,mysql,sql,amazon-rds,Mysql,Sql,Amazon Rds,我有三个表,病人集,用户和地图病人集用户。我正在尝试在单个查询中在patient_集和user以及patient_集和map_patient_集和user之间进行内部连接。查询应返回给定用户是其创建者或护理协调员的所有患者集合。但是,如果患者集具有所需的权限(在map_patient_set_user中指定),也可以返回患者集。下面的查询只从map_patient_set_用户返回数据,并忽略patient_set和user之间的连接。实现此联接的正确方法应该是什么 //Query SELECT
//Query
SELECT *
FROM (
patient_set AS a
JOIN user AS b ON a.creator_id = b.user_id OR a.care_coordinator = b.user_id
JOIN map_patient_set_user AS m ON a.patient_set_id = m.patient_set_id
)
WHERE
b.user_id = UUID_TO_BIN_F(:id)
OR
m.permission = 'view_all'
ORDER BY created DESC;
//Tables
CREATE TABLE user (
user_id BINARY(16) PRIMARY KEY NOT NULL,
first_name VARCHAR(55) NOT NULL,
last_name VARCHAR(25) NOT NULL,
org_id INT UNSIGNED,
FOREIGN KEY (org_id) REFERENCES organization(org_id),
lru_patient_set_id BINARY(16)
);
CREATE TABLE patient_set (
patient_set_id BINARY(16) PRIMARY KEY NOT NULL,
creator_id BINARY(16) NOT NULL,
FOREIGN KEY (creator_id) REFERENCES user(user_id),
created DATETIME NOT NULL,
last_updated DATETIME,
care_coordinator BINARY(16),
FOREIGN KEY (care_coordinator) REFERENCES user(user_id),
num_patient_updates INT NOT NULL,
name VARCHAR(100)
);
CREATE TABLE map_patient_set_user (
patient_set_id BINARY(16),
user_id BINARY(16),
permission ENUM('view_no_personal', 'view_all', 'edit_all'),
FOREIGN KEY(patient_set_id) REFERENCES patient_set(patient_set_id),
FOREIGN KEY(user_id) REFERENCES user(user_id)
);
如果您有不与其他表联接的应返回行,请使用使用
UNION
组合的多个查询。在mysql中,联接与内部联接相同。你可能需要左键连接