2016-06-09 4 views
0

Я хочу создать таблицу вывода, которая представляет собой комбинацию двух входных таблиц, как показано ниже. Таблица 1 и таблица 2 являются таблицами MySQL. Вывод - это желаемый вид таблицы.MySQL Cross table query join

enter image description here

Пожалуйста hlep меня billd этот выход из table1 и table2 (MySQL)

+0

Вы упоминаете PHP, так обрабатывать проблему с отображением там – Strawberry

ответ

0

Вы можете использовать условную агрегацию с UNION ALL для этого:

SELECT t1.acc_no, t1.name, 
     SUM(CASE WHEN t2.`date` = '2016-06-01' THEN amount END) AS '2016-06-01', 
     SUM(CASE WHEN t2.`date` = '2016-06-02' THEN amount END) AS '2016-06-02', 
     SUM(CASE WHEN t2.`date` = '2016-06-03' THEN amount END) AS '2016-06-03', 
     SUM(amount) AS 'Total' 
FROM table1 AS t1 
LEFT JOIN table2 AS t2 ON t1.acc_no = t2.acc_no 

UNION ALL 

SELECT 'Total', null, 
     SUM(CASE WHEN t2.`date` = '2016-06-01' THEN amount END) AS '2016-06-01', 
     SUM(CASE WHEN t2.`date` = '2016-06-02' THEN amount END) AS '2016-06-02', 
     SUM(CASE WHEN t2.`date` = '2016-06-03' THEN amount END) AS '2016-06-03', 
     SUM(amount) AS 'Total' 
FROM table2 
+0

Условное агрегирование не очень хорошо при работе с датами, а что, если их 30? «Pivot» - правильное решение здесь. – sagi

+0

@sagi К сожалению, pivot недоступен в MySQL (AFAIK). –

+0

Tnx и уважайте свой ответ, Также я хочу это знать. даты не являются статическими. Это какая-то петля. как применить это. –