SQL: 2 столбца в 1 результирующем наборе

#mysql #sql #join

#mysql #sql #Присоединиться

Вопрос:

Допустим, у меня есть 3 таблицы :

info_contact :

  id_contact     id_demand       email 
     1             1        contact1@a.com
     2             2        contact2@a.com
     3             3        contact3@a.com
  

требовать :

  id_demand   date   
     1       2016-10-12     
     2       2016-11-05    
     3       2016-12-12     
  

приглашение :

  id_invitation  id_demand   partner_company  concurrent_company
     1             1             google           facebook
     2             1              null            linkedin
     3             2             google             null
     4             2              null             yahoo
     5             3             google             null
  

Я хотел бы получить такой результат :

      Company  |   id_demand 
     ----------------------
     Facebook |      1
     Google   |      1
     Google   |      2
     Google   |      3
     Linkedin |      1
     Yahoo    |      2
  

без разницы между partner_company и concurrent_company (вместе в результате).

На данный момент я пытался :

 SELECT i.partner_company, d.id_demand
FROM info_contact as c, demand as d, invitation as i
WHERE c.id_demand = d.id_demand AND d.id_demand = i.id_demand
AND i.partner_company IS NOT NULL
GROUP BY i.partner_company, d.id_demand;
  

и

 SELECT i.concurrent_company, d.id_demand
FROM info_contact as c, demand as d, invitation as i
WHERE c.id_demand = d.id_demand AND d.id_demand = i.id_demand
AND i.concurrent_company IS NOT NULL
GROUP BY i.concurrent_company, d.id_demand;
  

и я не знаю, как объединить эти 2 запроса и получить результат, который я хочу

Ответ №1:

Попробуйте использовать UNION ALL

 select partner_company , id_demand
From invitation 
Where partner_company is not null
Union All
select concurrent_company , id_demand
From invitation 
Where concurrent_company is not null
  

Также я не JOIN просматривал другие таблицы, так как вы их не выбираете. Если вы хотите проверить существование, то JOIN это. Используйте INNER JOIN синтаксис для объединения в таблицу