2014-02-19 4 views
-2

Создание облегченного бюджетного приложения. У меня есть одна база данных, две таблицы.Извлечение информации из двух таблиц MYSQL с использованием PHP

СДЕЛКИ - дата, сумма, поставщика, category_id (одна цифра) КАТЕГОРИИ - идентификатор, имя, предел (насколько я могу провести в каждом)

Я в настоящее время с помощью PHP, чтобы напечатать сумму всего сумм всех транзакций, сгруппированных по категориям. То, что я хочу сделать, - показать каждое сгруппированное общее количество, но также соответствующее «имя» и «предел». Я также хотел бы написать математику, поэтому каждый «value_sum» вычитается из «предела», и разница отображается.

Пример:

Бакалея - Отработанные: -12,00 Лимит: 200,00 Слева: 188,00
Аренда - Потрачено: -3.00 Лимит: 200.00 Слева: 188,00
Угрызения - Потрачено: -9,00 Лимит: 200,00 Слева: 188.00
Утилиты - Отработанная: -45,00 Limit: 200,00 Осталось: 188,00

<?php 

$result = mysql_query("SELECT SUM(amount) AS value_sum FROM TRANSACTIONS group by category") 
or die(mysql_error()); 

$number = value_sum; 

while($row = mysql_fetch_array($result)) { 

    echo "<div class='col1'>"; 
    echo round ($row['value_sum'], 2); 
    echo "</div>"; 
} 


?> 
+0

'select category, sum ... group by category' ... не может отображать то, что вы не получаете. –

+1

Итак, вы, очевидно, понимаете, что вам нужно извлекать данные из обеих таблиц, но ваш примерный код не показывает, что вы пытаетесь сделать это вообще. Вы пытались присоединиться к столам, но не были успешными? Можете ли вы показать эту попытку? –

+0

Вы говорите, что у вас есть две ** базы данных ** (одна из них называется ОПЕРАЦИИ), но затем вы «ВЫБЕРИТЕ ... ОТ ОПЕРАЦИЙ» .. вы имели в виду две ** таблицы **? –

ответ

0

Не тестировался, но я предполагаю, что простое соединение будет делать трюк:

SELECT SUM(`t1`.`amount`) AS `value_sum`, `t2`.`name`, `t2`.`limit` 
FROM `transactions` AS `t1` 
JOIN `categories` AS `t2` 
    ON `t1`.`category_id` = `t2`.`category` 
GROUP BY `category`; 
0

Вы могли бы использовать что-то вроде этого:

SELECT 
    (select cat.name from CATEGORIES where cat.id = tran.category_id limit 1) as Categorie, 
    SUM(tran.amount) as Spent, 
    (select cat.limite from CATEGORIES where cat.id = tran.category_id limit 1) as Limite, 
    (select cat.limite from CATEGORIES 
     where cat.id = tran.category_id limit 1)-(SUM(tran.amount)) AS Lefted 
    FROM TRANSACTIONS tran 
    group by tran.category_id; 

изменить предел вар к LIMITE, потому что это зарезервированное слово MySQL; Я также использую category_id, как в описании ваших таблиц.

+0

Хорошо. так это работает! Как тогда я бы включил «имя» каждого бюджета в КАТЕГОРИИ? Это мой последний код: SELECT \t \t \t \t \t \t \t \t \t \t (выберите имя из КАТЕГОРИЙ, где ID = предел tran.category_id 1) в качестве Категорий, \t \t \t \t \t SUM (tran.amount) как отработавших , \t \t \t \t \t \t \t \t \t \t (ы избранный Limite от КАТЕГОРИЙ, где ID = предел tran.category_id 1) в качестве Limite, \t \t \t \t \t \t \t \t \t \t (выберите Limite из КАТЕГОРИЙ, где ID = предел tran.category_id 1) - (SUM (транно.сумма)) КАК Lefted \t \t \t \t \t \t \t \t \t \t от операций Tran \t \t \t \t \t \t \t \t \t \t GROUP по tran.category_id; –

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