0

我正在尝试执行此查询。我有这三个表项目 id 名称

authors
    id
    id_user
    fk_id project
    type = author, editor

在表中,我有作者是谁,谁是创建者,谁是编辑我试图在 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'

这种类型的查询可以使用,或者如果我做错了。

4

1 回答 1

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
于 2013-05-31T17:47:15.783 回答