2013-03-25 5 views
-1

Привет У меня есть две таблицы в моей базе данных 1. Доход 2. Результат таблица доходов имеет ID, дата, цена также Результат таблицы точно так же им показывает Sum цен на сегодня, как этотбаланс двух результатов запроса из различных таблиц

mysql_select_db($database_conn, $conn); 
$query_gelen_gun = sprintf ("SELECT SUM(tutar) FROM cepbank WHERE tarih >= DATE(NOW())"); 
$gelen_gun = mysql_query($query_gelen_gun, $conn) or die(mysql_error()); 
$row_gelen_gun = mysql_fetch_assoc($gelen_gun); 
$totalRows_gelen_gun = mysql_num_rows($gelen_gun); 

mysql_select_db($database_conn, $conn); 
$query_giden_gun = sprintf ("SELECT SUM(tutar) FROM cepbank_out WHERE tarih >= DATE(NOW())"); 
$giden_gun = mysql_query($query_giden_gun, $conn) or die(mysql_error()); 
$row_giden_gun = mysql_fetch_assoc($giden_gun); 
$totalRows_giden_gun = mysql_num_rows($giden_gun); 

. . .

<p>Total Income for Today:<?php echo $row_gelen_gun['SUM(tutar)']; ?></p> 
<p>Total Outcome for Today:<?php echo $row_giden_gun['SUM(tutar)']; ?></p> 

Теперь, как я могу показать баланс этого два результата, например $row_gelen_gun['SUM(tutar)'] = 100 и $row_giden_gun['SUM(tutar)'] = 50

баланс должен быть 100-50 = 50?

Примечание: Цена = tütar в запросе

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. – Kermit

ответ

0

Вы либо хотите использовать union all или cross join. Используйте union all, чтобы получить результаты в две строки. Используйте cross join, чтобы получить результаты в двух столбцах в одной строке.

Вот пример для cross join:

select sumcep, sumcepout 
from (SELECT SUM(tutar) as sumcep 
     FROM cepbank 
     WHERE tarih >= DATE(NOW()) 
    ) t cross join 
    (SELECT SUM(tutar) as sumcepout 
     FROM cepbank_out 
     WHERE tarih >= DATE(NOW()) 
    ) t2 
+0

Большое спасибо и как я буду жаловаться на баланс = sumcep-sumcepout и показать баланс – PcRestorer

0

Вы можете сделать это с запросом Гордона, и если вы хотите MySQL рассчитать баланс просто изменить первую строку на это:

select sumcep, sumcepout, sumcep-sumcepout as balance 

Если вы хотите остаться с вашим текущим подходом (два отдельных запроса), вот несколько рекомендаций:

Во-первых, я бы назвал столбцы, потому что их имена по имени SUM(tutar) могут вводить в заблуждение. Кроме того, мне всегда было непросто доверять имени сгенерированного столбца, когда задействована функция. Таким образом, вместо них:

SELECT SUM(tutar) FROM cepbank WHERE tarih >= DATE(NOW()) 
SELECT SUM(tutar) FROM cepbank_out WHERE tarih >= DATE(NOW()) 

... попробуйте эти:

SELECT SUM(tutar) AS Income FROM cepbank WHERE tarih >= DATE(NOW()) 
SELECT SUM(tutar) AS Outcome FROM cepbank_out WHERE tarih >= DATE(NOW()) 

И тогда для баланса Вы можете сделать это:

$balance = $row_gelen_gun['Income'] - $row_giden_gun['Outcome']; 

PHP будет отбрасывать/преобразовать номер для вас ,

BTW, вы можете использовать CURRENT_DATE вместо DATE(NOW()), но это не так. Измените, если вы считаете, что запрос делает более читаемым - ваш звонок :)

Но самое главное, если это что-то большее, чем школьное задание или учебное упражнение, пожалуйста, используйте PDO или MySQLi. Даже если это учебное упражнение, попробуйте заставить его работать так, как есть, а затем преобразовать в PDO или MySQLi - вам нужно будет использовать их в «реальном мире».

+0

выбрать sumcep, sumcepout, sumcep-sumcepout как баланс это решено мой вопрос спасибо я использую Dreamweaver, он создает коды для меня, а затем редактирует, когда мне нужно, я только начинаю кодировать, я узнаю, что такое MySQLi и PDO, спасибо за вашу помощь – PcRestorer