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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Многотабличный запрос с использованием SUM()

Сообщения:  [1-4] 

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

Нет. Сложность никуда не девается, выполняете вы один многотабличный запрос, или два отдельных запроса или используете конструкцию UNION - вычислений требуется примерно одинаково во всех случаях.

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

А если я сделаю эти запросы с UNION, то это тоже на скоросте не отобразится?

   
 
 автор: cheops   (24.01.2006 в 13:05)   письмо автору
 
   для: LO   (24.01.2006 в 12:22)
 

Лучше сделайте два отдельных запроса - в скорости различий практически не будет.

   
 
 автор: LO   (24.01.2006 в 12:22)   письмо автору
 
 

У меня есть две таблицы.
table1

CREATE TABLE 'table1' (
  'b_id' int(10) unsigned NOT NULL auto_increment,
  'u_id' int(10) unsigned NOT NULL default '0',
  'a_id' int(10) unsigned NOT NULL default '0',
  'year' year(4) NOT NULL default '0000',
  'month' char(2) collate cp1251_ukrainian_ci NOT NULL default '0',
  'summa' float(10,2) NOT NULL default '0.00',
  PRIMARY KEY  ('b_id')


и table 2

CREATE TABLE 'table2' (
  'p_id' int(10) unsigned NOT NULL auto_increment,
  'u_id' int(10) unsigned NOT NULL default '0',
  'data' date NOT NULL default '0000-00-00',
  'summa' float(10,2) NOT NULL default '0.00',
  'state' enum('0','1','2') collate cp1251_ukrainian_ci default '0',
  'a_id' int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  ('p_id')
)

мне нужно сделать запрос , что выводились суммы из одной и другой таблицы за определенный месяц, a_id, u_id и из второй тоблицы учитывалось поле state
Я формирую запрос

SELECT SUM(b.summa), SUM(p.summa)
FROM 'table1' as b, 'table2' as p 
WHERE b.year = '2005'
AND b.month = '12'
AND p.data between  '2005-12-01' and '2005-12-31'
AND p.state = '1'
AND p.a_id = b.a_id
AND b.a_id='14'
AND p.u_id = b.u_id
AND b.u_id='5'

По данным условиям в первой таблице есть одна запись, а во второй две, поэтому при выводе суммы, значение первой таблицы удваивается.
Как мне переделать запрос, что суммирывались только уникальные значения?

   

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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