I have the following tables :
TABLE Users :
id_user | name | job
--------|------|----
1 | John | Director
2 | Lila | Assistant
3 | Paul | Director
4 | Jude | Assistant
TABLE Site :
id_site | city
--------|-------
110 | Paris
111 | London
TABLE Contact :
id_user | id_site | is_assistant | is_director
--------|---------|--------------|------------
1 | 110 | NULL | 1
2 | 110 | 1 | NULL
3 | 111 | NULL | 1
4 | 111 | 1 | NULL
Let me explain. I have the different users of the company in the table Users ; the different locations of the company in the table Site and finally a table Contact that relates the table users with the table Sites.
Here is my query :
SELECT
site.*,
`assistant`.`job` AS "Assistant Job",`assistant`.`name` AS "Assistant name",
`directors`.`job` AS "Job director",`directors`.`name` AS "Director name"
FROM `site`
LEFT OUTER JOIN contact ON contact.id_site = site.id_site
LEFT OUTER JOIN `users` AS assistant ON `contact`.`id_user` = `assistant`.`id_user` AND `contact`.`is_assistant` = "1"
LEFT OUTER JOIN `users` AS directors ON `contact`.`id_user` = `directors`.`id_user` AND `contact`.`is_director` = "1"
ORDER BY site.id_site
The query is quite OK, but the problem is that I have results like :
id_site | city | Assistant Job | Assistant name | Job director | Director name
--------|--------|---------------|----------------|--------------|--------------
110 | Paris | NULL | NULL | Director | John
110 | Paris | Assistant | Lila | NULL | NULL
111 | London | NULL | NULL | Director | Paul
111 | London | Assistant | Jude | NULL | NULL
I'd like to have all the information on the same row instead of having 2 almost identical rows. I'd like something like :
id_site | city | Assistant Job | Assistant name | Job director | Director name
--------|--------|---------------|----------------|--------------|--------------
110 | Paris | Assistant | Lila | Director | John
111 | London | Assistant | Jude | Director | Paul
I hope I'm being clear enough. Could you help me please ?
Thank you very much.
Stefey