2012-01-10 3 views
0

У меня есть две таблицы, которые я бы хотел включить в один из запросов SELECT, объединив несколько столбцов, оставив разные столбцы.SQL - объединить только некоторые столбцы из разных таблиц

первый стол (posts_article)

id_post id_user title content published nbr_comments timestamp 
--------------------------------------------------------------------------- 
1   15  title1 text1  1   23    1111111111 
2   20  title2 text2  0   54    1122334455 

второй таблице (posts_text)

id_post id_user message nbr_comments timestamp 
------------------------------------------------------- 
1   17  message1 15    1234567891 
2   22  message2 0    1987654321 

ожидаемый результат

id_post id_user title content message published nbr_comments timestamp 
-------------------------------------------------------------------------------------- 
1   15  title1 text1    1   23    1111111111 
2   20  title2 text2    0   54    1122334455 
1   17       message1    15    1234567891 
2   22       message2    0    1987654321 

Я попробовал несколько вещей, но я не могу на самом деле решить это. как я могу получить ожидаемый результат? Каков наиболее эффективный способ выбора этого результата?

EDIT: Логика этого объединения заключается в том, чтобы одновременно получать всевозможные «сообщения» (представленные пользователями).

Спасибо.

+0

могли бы Вы рассказать более точно, что вы хотите, чтобы присоединиться к/слияния логики быть? Пример довольно приятный, но нам не хватает инструкции цели. – Romain

+0

Я только что редактировал сообщение. (Не уверен, что я должен был ответить или прокомментировать или что-то еще, я совершенно новый для stackoverflow.) – oliv23

ответ

1

Try:

SELECT id_post, id_user, title, content, NULL AS message , published, nbr_comments, timestamp FROM posts_article 
UNION 
SELECT id_post, id_user, NULL as title, NULL as content, message, NULL as published, nbr_comments, timestamp FROM posts_text 
+0

Спасибо, что отлично работает, но как вы думаете, это лучший способ - ressource wise - к этому? – oliv23

+0

Обычно, если вы в состоянии изменить свою модель, лучше всего это сделать. Imho каждый UNION основан на недостатке дизайна. Если вы не можете изменить модель, потому что проект - проект с коричневым полем или что-то вроде этого, вам нужно жить с ним и ограничениями. – fyr

+0

Ну, в основном пользователи могут публиковать статьи или короткие сообщения или фотографии, например, и хранить каждый тип «сообщения» в своей таблице. Итак, для меня есть только три решения проблемы получения всех сообщений: 1) иметь столько запросов, сколько есть типов сообщений 2) UNION все запросы на получение всех сообщений одновременно 3) хранить все типы сообщений в ** одна ** база данных, повторяющая «ожидаемый результат» в этом вопросе и SELECT оттуда. – oliv23

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