Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вычисление сумм и нескольких таблиц
 
 автор: LO   (30.01.2006 в 11:58)   письмо автору
 
 

У меня есть две таблицы table1 и table2.
Структура таблицы 'table1'

CREATE TABLE 'table1' (
  'i_id' int(10) unsigned NOT NULL auto_increment,
  'u_id' int(10) unsigned NOT NULL default '0',
  'summa' float(10,2) NOT NULL default '0.00',
  'mfo' varchar(5) collate cp1251_ukrainian_ci NOT NULL default '',
  PRIMARY KEY  ('i_id')
)

Структура таблицы 'table2'

CREATE TABLE 'table2' (
  'p_id' int(10) unsigned NOT NULL auto_increment,
  'u_id' int(10) unsigned NOT NULL default '0',
  'summa' float(10,2) NOT NULL default '0.00',
  'mfo' varchar(5) collate cp1251_ukrainian_ci NOT NULL default '',
  PRIMARY KEY  ('p_id')
)

Мне нужно получить разность сумм из этих таблиц по определенноу u_id и mfo. Но я бы хотела сделать запрос, в котором сразу отображался результат по всем mfo и необязательно разность сумм, а хотябы просто суммы. Что-то вроде

mfo  SUM(table1.summa)  SUM(table2.summa)
1       11.11              22.22
2       NULL               33.33
3       44.44              NULL
5       45.23              123.40

NULL означает, что нет данных, но хотелось бы чтоб выводилось 0.00
Вобщем, не знаю, как решить данную проблему.
P.S.
Из одной таблицы запрос сделать легко
SELECT  p.mfo, SUM(p.summa)
FROM 'table2' as p
where p.u_id='5'
group by p.mfo

   
 
 автор: cheops   (30.01.2006 в 13:34)   письмо автору
 
   для: LO   (30.01.2006 в 11:58)
 

Хм... лучше сразу делайте два запроса - проблем будет значительно меньше... Скорее всего результат всегда будет ошибочным, так как группировать можно будет только по mfo одной из таблиц...

   
 
 автор: LO   (30.01.2006 в 13:48)   письмо автору
 
   для: cheops   (30.01.2006 в 13:34)
 

Ну тогда встречный вопрос:
Как сделать запрос вычисляя непремено уже разность суммы, пусть по оперделенному u_id и mfo?

SUM(table1.summa) - SUM(table2.summa)

будет ли правильно выводиться результат, если для одной из таблиц не будет данных по условию

   
 
 автор: cheops   (30.01.2006 в 14:41)   письмо автору
 
   для: LO   (30.01.2006 в 13:48)
 

NULL можно получить лишь для одной из таблиц при помощи левого объединения (JOIN LEFT), для второго уже не получится, но в любом случае с NULL дело иметь не выйдет - любые арифмитические операции с NULL имеют результатом NULL.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования