mysql - ajuda com SELECT,帮我选择 mysql
问题描述
表Usuarios
usuario_id | name
20 | Jose
22 | Maria
表Pacientes
paciente_id | usuario_id
10 | 20
表功能
funcionario_id | usuario_id | CRM
3 | 22 | 342-BA
Table Consultas_medicas
id | paciente_id | funcionario_id | date | time
1 | 10 | 3 | 11/11 | 13:30
我需要在 Consultas_medicas 表中执行 Select 并给我 paciente_id 的名称和 funcionario_id 的名称
我试过这个:
SELECT * FROM
usuarios as u
INNER JOIN
funcionarios as f
INNER JOIN
consultas_medicas as c
INNER JOIN
pacientes as c
ON
(u.id=f.usuario_id)
and
(c.funcionario_id=f.funcionario_id)
解决方案
以您在上面写的内容,我将假设这是您的基本架构:
CREATE TABLE usuarios
(
usuario_id INT NOT NULL,
name VARCHAR(255),
PRIMARY KEY (usuario_id)
);
CREATE TABLE pacientes
(
paciente_id INT NOT NULL,
usuario_id INT NOT NULL,
PRIMARY KEY (paciente_id, usuario_id)
);
CREATE TABLE funcionarios
(
funcionario_id INT NOT NULL,
usuario_id INT NOT NULL,
CRM VARCHAR(255),
PRIMARY KEY (funcionario_id)
);
CREATE TABLE consultas_medicas
(
id INT NOT NULL,
paciente_id INT NOT NULL,
funcionario_id INT NOT NULL,
date VARCHAR(255),
time VARCHAR(255),
PRIMARY KEY (id)
);
ALTER TABLE pacientes ADD CONSTRAINT FOREIGN KEY (usuario_id) REFERENCES usuarios(usuario_id);
ALTER TABLE funcionarios ADD CONSTRAINT FOREIGN KEY (usuario_id) REFERENCES usuarios(usuario_id);
ALTER TABLE consultas_medicas ADD CONSTRAINT FOREIGN KEY (paciente_id) REFERENCES pacientes(paciente_id);
ALTER TABLE consultas_medicas ADD CONSTRAINT FOREIGN KEY (funcionario_id) REFERENCES funcionarios(funcionario_id);
INSERT INTO usuarios VALUES (20, 'Jose'), (22, 'Maria');
INSERT INTO pacientes VALUES (10, 20);
INSERT INTO funcionarios VALUES (3, 22, '342-BA');
INSERT INTO consultas_medicas VALUES (1, 10, 3, '11/11', '13:30');
如果是这样,您提供的查询使用c
别名两次,并且usuarios
表的主键是usuario_id
而不仅仅是id
.
如果是这样,那么这个查询应该可以工作:
SELECT * FROM
usuarios as u
INNER JOIN
funcionarios as f
INNER JOIN
consultas_medicas as c
INNER JOIN
pacientes as p
ON
(u.usuario_id=f.usuario_id)
and
(c.funcionario_id=f.funcionario_id)
该查询将导致几个重复的列名,特别usuario_id
是将返回 3 次,因此您还需要为它们设置别名(或者您的代码需要知道如何处理它),但这应该可以让您了解正确的路径。
或者,如果你真的不需要加入usuarios
表格,你可以稍微简化一下:
SELECT
*
FROM
pacientes p
LEFT JOIN
consultas_medicas c
ON
p.paciente_id = c.paciente_id
LEFT JOIN
funcionarios f
ON
c.funcionario_id = f.funcionario_id
推荐阅读
- typescript - 如何在 Typescript 中扩展模块
- security - 高峰期网站的性能很差
- python - LSTM时间序列预测——从低loss开始,准确率不变
- laravel - 想加入三表却不行[雄辩]
- vbscript - 使用 CDO 的电子邮件主题的编码问题
- java - 如何在 android studio 中导入 android.support.v7.app.Appcompatactivity?
- reactjs - 无法保存值的输入
- google-assistant-sdk - 家庭助理和谷歌助理集成面临的问题
- python - 通过 pip3 安装的软件包,在 Mac 上不会自动创建符号链接
- python - 通过刷新空页面Python3等待元素