2013-09-03 4 views
1

У меня 3 таблицы с именем rsales, , productlist. Таблица rsales и rreturn имеет totalcolumn. Моя цель состоит в том, что я хочу суммировать все значения total от rsales и total значение от rreturn таблицы и выбрать только значение из productlist стол.Выбор 3 разных таблиц

Пусть говорят, например, у меня есть данные из productlist таблицы: данные

id | pcode | pname | pdesc | 
1 | 222 | 33uf | 10v | 

из rsales таблицы: данные

id | total | pcode | 
1 | 200 | 222 | 
2 | 200 | 222 | 

из rreturn таблицы:

id | total | pcode | 
1 | 50 | 222 | 
2 | 20 | 222 | 

в должно быть что-то вроде этого:

id | pcode | pname | pdesc | total 
    1 | 222 | 33uf | 10v | 470 

Мой вопрос заключается в следующем: я хочу суммировать все total значения из rsales и rreturn таблицы и выбрать все значения из productlist. У меня есть следующий код ниже и работает очень хорошо. Но он может суммировать только общее значение из таблицы rsales, или, скорее, он может суммировать значение только из одной таблицы.

$result = mysql_query("SELECT 
    productlist.*, 
    SUM(rsales.total) as total, 
     SUM(rsales.vatable_sales) as vatable_sales, 
    SUM(rsales.vats) as vats, 
    SUM(rsales.discount) as discount 

FROM productlist 
LEFT JOIN rsales ON rsales.pcode = productlist.pcode 
GROUP BY pcode 
ORDER BY total ASC"); 
+2

Пожалуйста, покажите нам образцы данных, а также. –

+0

И желаемый результат для этих данных. – hjpotter92

+0

Я уже представил пример сэр – user2656724

ответ

1

Вы не очень четко говорите о том, что не работает для вас. Вы получаете результаты, но цифры не то, что вы ожидаете? Ну, скажем, у вас три продажи и два возврата, тогда вы получите шесть записей, присоединившись ко всем таблицам. Таким образом, вы удваиваете свои продажи и утроиваете свои прибыли.

Вы можете присоединиться к агрегирование вместо одного решения:

$result = mysql_query("SELECT 
    productlist.*, 
    sumsales.sum_total + sumreturns.sum_total as total, 
    sumsales.sum_vatable_sales as vatable_sales, 
    sumsales.sum_vats as vats, 
    sumsales.sum_discount as discount 
    FROM productlist 
    LEFT JOIN 
    (
     SELECT pcode, SUM(total) as sum_total, SUM(vatable_sales) as sum_vatable_sales, SUM(vats) as sum_vats, SUM(discount) as sum_discount 
     FROM rsales 
     GROUP BY pcode 
    ) AS sumsales ON sumsales.pcode = productlist.pcode 
    LEFT JOIN 
    (
     SELECT pcode, SUM(total) as sum_total 
     FROM rreturn 
     GROUP BY pcode 
    ) AS sumreturns ON sumreturns.pcode = productlist.pcode 
    ORDER BY total ASC"); 
Смежные вопросы