我正在尝试执行此查询。 我有这三张桌子 项目 ID 名称
authors
id
id_user
fk_id project
type = author, editor
表I中的是作者的创造者,也是编辑 我正在尝试在mysql中进行查询,您可以在一条记录中查看 谁是作者和出版商。
我与其中一个进行咨询
SELECT p.id_project,p.name_project,a.fk_id_user,a.type,u.name
FROM projects p,users u, authors a
where p.id_project = a.fk_id_project
and a.type = 'author'
and a.fk_id_user = u.id_user
结果是
id_project, name_proyect, type, user, name_user
1 , bambo, author, 145, andrea
想要做到这一点
id_project, name_proyect, type, user, name_user, type2, user2, name_user2
1 ,bambo , author,145, andrea, editor, 785, barack
尝试这样做但没有效果
SELECT p.id_project,p.name_project,a.fk_id_user,a.type,u.name,a.fk_id_user as user2, a.tipo as type2
FROM
projects p, users u, authors to
where p.id_project = a.fk_id_project
and a.type = 'author'
and a.fk_id_user = u.id_user
and user2 = u.id_user
and Typo2 = 'editor'
这种类型的查询可以使用,或者如果我做错了。
答案 0 :(得分:1)
建议使用LEFT或INNER JOIN作者使用ON blablabla,而不是在WHERE子句中使用所有内容。但是,试试这个:
SELECT
p.id_proyecto,
p.nombre_proyecto,
a.tipo,
a.fkidusario,
u.Nombres,
aa.tipo as type2
aa.fkidusario as user2,
uu.Nombres as name_user2
FROM proyectos p
JOIN usuarios u
JOIN usuarios uu
LEFT JOIN responsables a ON p.id_proyecto = a.fkidproyecto AND a.tipo = 'author' AND a.fkidusario = u.id_usuario
LEFT JOIN responsables aa ON p.id_proyecto = aa.fkidproyecto AND aa.tipo = 'editor' AND aa.fkidusario = uu.id_usuario