Объединить стол MySQL

0

Мне нужно стол, чтобы объединить в 1

Table 1 :
| ID | FEEDBACK_VALUE  |
|  1 | EMAILS          |
|  2 | WALK IN         |
|  3 | SMS BLAST       |
|  4 | SOCIAL MEDIA    |
|  5 | NEWSPAPER       |
|  6 | FAMILY & FRIEND |
|  7 | OTHERS          |

Table 2 :
| ID | FEEDBACK_ID |
|  1 |           1 |
|  2 |           2 |
|  3 |           2 |
|  4 |           7 |
|  5 |           7 |
|  6 |           7 |
|  7 |           4 |
|  8 |           4 |
|  9 |           3 |

Table 3 :
| ID | FEEDBACK_VALUE  | FEEDBACK_RECEIVE |
|  1 | EMAILS          |                1 |
|  2 | WALK IN         |                2 |
|  3 | SMS BLAST       |                1 |
|  4 | SOCIAL MEDIA    |                2 |
|  5 | NEWSPAPER       |                0 |
|  6 | FAMILY & FRIEND |                0 |
|  7 | OTHERS          |                3 |

Из таблицы 1 и 2, Как я могу получить результат, как таблица 3, используя mysql? Спасибо

Теги:

3 ответа

0
Лучший ответ

Просто используйте подзапрос, как показано ниже:

SELECT A.*, (SELECT COUNT(*) FROM TABLE2 B WHERE A.ID=B.FEEDBACK_ID) AS FEEDBACK_RECEIVE
FROM TABLE1 A;

См. DEMO в SQL Fiddle

  • 0
    Благодарю. Понятно и просто.
2

Вы можете использовать левый jojn и подзапрос с группой count

  select t1.ID, t1.FEEDBACK_VALUE, ifnull( my_count,0) feedback_receive
  from table1 t1
  left join (

    select FEEDBACK_ID, count(*) as my_count
    from table 2
    group by FEEDBACK_ID

  ) t   on t1.ID = t.FEEDBACK_ID
0

Или, если меньше кода - это ваше дело...

SELECT x.* 
     , COUNT(y.id) total 
  FROM table_1 x 
  LEFT 
  JOIN table_2 y 
    ON y.feedback_id = x.id 
 GROUP 
    BY x.id;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню