Таблицы соединения MySQL - PullRequest
2 голосов
/ 26 июня 2011

Я должен объединить таблицы в соответствии с условиями

стол: основной

  • condition_field
  • unique_id
  • имя пользователя

Таблица:

  • unique_id
  • НазваниеКомпания

стол: б

  • имя пользователя
  • НазваниеКомпания

    Если main.condition_field = "X" Мне нужно присоединиться к таблице a на main.unique_id = a.unique_id

    Иначе, если main.condition_field = "Y" Мне нужно присоединиться к таблице b на main.username = b.username

Пока у меня есть только этот запрос, соединяющий 2 таблицы main и таблицу a

SELECT main.*, a.* FROM main LEFT JOIN a ON main.unique_id = a.unique_id where main.unique_id='X'

Пожалуйста, помогите


@ Lukas

Большое спасибо за это, но у меня есть еще одно поле [status] в основной таблице и я хочу добавить условие к запросу

WHERE status = 'ACTIVE'

где я могу разместить условие условия.

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Возможно, это то, что вам может понадобиться:

SELECT main.*, a.* 
FROM main 
LEFT JOIN a ON main.unique_id = a.unique_id 
where main.condition_field='X'

UNION 

SELECT main.*, b.* 
FROM main 
LEFT JOIN b ON main.username = b.username 
where main.condition_field='Y'
0 голосов
/ 26 июня 2011

Вы можете иметь несколько условий в предложении объединения ON:

SELECT
    main.*,
    CASE main_condition
    WHEN 'X' THEN a.companyname
    WHEN 'Y' THEN b.companyname
    ELSE NULL
    END AS companyname
FROM main
LEFT JOIN a ON main.condition_field = 'X' AND main.unique_id = a.unique_id
LEFT JOIN b ON main.condition_field = 'Y' AND main.username = b.username
WHERE main.status = 'ACTIVE'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...