2013-05-31 4 views
0

Я пытаюсь выполнить этот запрос. У меня есть эти три таблицы проектов, ID имяЗапрос с теми же полями в mysql

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' 

Этот тип запроса может использовать или если я делаю это неправильно.

+1

Просьба уточнить фразу «но не сработала». Что на самом деле произошло, когда вы запустили этот запрос? –

+1

- это «проекты p, пользователи u, авторы, чтобы опечатать? если нет, вам нужно сменить 'author to' на' authors a' –

+1

Кроме того, он говорит Typo2 вместо type2 –

ответ

1

предлагать использовать ЛЕВЫЙ или ВНУТРЕННИЙ 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 
+1

+1 к использованию 'LEFT JOIN' и помещает все в предложение' WHERE'. Это намного легче читать. Я думаю, вы должны обновить свой пример, чтобы показать соединения в действии. – Anther

+1

Пробовал, но его трудно без схемы БД –

+0

спасибо за помощь, схема эта https://dl.dropboxusercontent.com/u/71291454/esquema.png Я сделал запрос так https: // dl.dropboxusercontent.com/u/71291454/consulta.PNG и результаты были повторены https://dl.dropboxusercontent.com/u/71291454/resultado.PNG – Marztres

Смежные вопросы