MYSQL Join Statement - Дополнительные таблицы? - PullRequest
0 голосов
/ 12 ноября 2011

Хорошо, я постараюсь, чтобы это имело смысл, лол.В основном у меня есть 4 разные таблицы, которые я пытаюсь объединить вместо нескольких отдельных операторов SQL, так как движок MYSQL должен оптимизировать его лучше, чем я.

В основном у меня есть эти 4 таблицы:

projects (key:id)
project_users (key:project_id , user_id)
users (key:id)
tasks (key:project_id)

Это мой запрос:

     SELECT projects.*, users.*, tasks.*,
     FROM 
     projects JOIN ( project_users JOIN 
                     users ON 
                     project_users.user = users.id ) 
        ON projects.id = project_users.project_id
        JOIN ( tasks )
               ON projects.id = tasks.project_id 
      WHERE projects.company = 2 ORDER BY projects.id

В основном я пытаюсь получить список проектов, пользователи в которыхпроект и задачи в этом проекте для определенной компании.

ПРОБЛЕМА - Если в этом проекте нет задачи, он не возвращает этот проект.Что мне еще нужно для этого проекта, просто с 0 задачами для этого проекта.

Я новичок в операторах JOIN, поэтому, если есть какое-то улучшение, которое я могу сделать, ПОЖАЛУЙСТА, дайте мне знать!1016 * СПАСИБО ЗА ВРЕМЯ И ПОМОЩЬ !!!!!

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Все, что вам нужно сделать, это добавить left outer перед объединением, которое объединяет задачи.Это даст вам проекты, хотя задач нет.

0 голосов
/ 12 ноября 2011

левые или правые соединения - ваши новые друзья

http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...