WebGraf » 2010.01.24 12:57

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

Код:

1
2
3
SELECT SUM(`cost`) FROM `stata` WHERE `mes`="' . $pref . '";
SELECT SUM(`cost`) FROM `stata2` WHERE `mes`="' . $pref . '";
SELECT SUM(`cost`) FROM `stata3` WHERE `mes`="' . $pref . '";
Gemorroj » 2010.01.24 13:36

UNION

WebGraf » 2010.01.24 16:17

Код:

1
2
3
(SELECT SUM(`stata`.`cost`) FROM `stata` WHERE `mes`="' . $pref . '") UNION
(SELECT SUM(`stata2`.`cost`) FROM `stata2` WHERE `mes`="' . $pref . '") UNION
(SELECT SUM(`stata3`.`cost`) FROM `stata3` WHERE `mes`="' . $pref . '");

неработает в таком примере
вот если без суммы то выборка чудесно происходит

Gemorroj » 2010.01.24 16:29

должно быть ок

WebGraf » 2010.01.24 16:43

как тогда сумму вывести на страницу?
$var['SUM(`cost`)'] - не выводит ничего у меня
$var['SUM(`stata`.`cost`)'] выводит только 1 таблицы, только смысл унион отпадает

Gemorroj » 2010.01.24 17:00

можно использовать нумерованный массив, а не ассоциативный, можно в запросе указать алиас через оператор AS ( ... SUM(`stata`.`cost`) AS v FROM ....)

WebGraf » 2010.01.24 19:22

Код:

1
2
3
4
5
6
7
8
$var = mysql_fetch_array(mysql_query("(SELECT SUM(`stata1`.`cost_rur`) AS cost
FROM stata1) UNION
(SELECT SUM(`stata2`.`cost_rur`) AS cost
FROM stata2) UNION
(SELECT SUM(`stata3`.`cost_rur`) AS cost
FROM stata3); "));
 
echo $var['cost'];

в чем ошибка?

Gemor » 2010.01.24 20:03

Код:

1
2
3
4
5
(SELECT SUM(cost_rur) AS cost1 FROM stata1)
UNION
(SELECT SUM(cost_rur) AS cost2 FROM stata2)
UNION
(SELECT SUM(cost_rur) AS cost3 FROM stata3);
WebGraf » 2010.01.24 20:43

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$week = mysql_fetch_array(mysql_query("(SELECT SUM(`cost_rur`) AS cost,
COUNT(`cost_rur`) AS kol
FROM stata1 WHERE
`msg`='" . $pref . "') UNION
(SELECT SUM(`cost_rur`) AS cost,
COUNT(`cost_rur`) AS kol
FROM stata2 WHERE
`msg`='" . $pref . "') UNION
(SELECT SUM(`cost_rur`) AS cost,
COUNT(`cost_rur`) AS kol
FROM stata3 WHERE
`msg`='" . $pref . "'); "));
 
$var = $week['cost'];

Выводит сумму из первой таблицы

Gemorroj » 2010.01.24 21:11

Ты все данные вгоняешь в переменные с именами cost и kol. Давай разным выборкам разные имена.

WebGraf » 2010.01.24 21:22

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$week = mysql_fetch_array(mysql_query("(SELECT SUM(`cost_rur`) AS cost1,
COUNT(`cost_rur`) AS kol1
FROM stata1 WHERE
`msg`='" . $pref . "') UNION
(SELECT SUM(`cost_rur`) AS cost2,
COUNT(`cost_rur`) AS kol2
FROM stata2 WHERE
`msg`='" . $pref . "') UNION
(SELECT SUM(`cost_rur`) AS cost3,
COUNT(`cost_rur`) AS kol3
FROM stata3 WHERE
`msg`='" . $pref . "'); "));
 
$week_sms = $week['kol1'] + $week['kol2'] + $week['kol3'];
$week_rub = $week['cost1'] + $week['cost2'] + $week['cost3'];

также из таблицы 1 только

Gemorroj » 2010.01.24 21:59

Код:

1
2
3
4
5
6
7
8
9
10
$week = mysql_fetch_assoc(mysql_query('
SELECT SUM(stata1.`cost_rur`) AS cost1,
COUNT(stata1.`cost_rur`) AS kol1,
SUM(stata2.`cost_rur`) AS cost2,
COUNT(stata2.`cost_rur`) AS kol2,
SUM(stata3.`cost_rur`) AS cost3,
COUNT(stata3.`cost_rur`) AS kol3,
FROM stata1, stats2, stata3
WHERE `msg` = "' . $pref . '"
'));
WebGraf » 2010.01.24 23:40

ну чтото подобное с чего я начинал, только cost не 1 а 3
Добавлено спустя   4 минуты  24 секунды:

можно вопрос - почему вы используете одинарные кавычке вместо двойных? в этом случае тестировал много раз на скорость выполнения, разницы нету

WebGraf » 2010.01.24 23:54

ничего не выводит
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
на последнюю строку where ... ));

Gemorroj » 2010.01.25 09:45

что-то я туплю

Код:

1
2
3
4
5
6
7
8
9
10
SELECT SUM(stata1.`cost_rur`) AS cost1,
COUNT(stata1.`cost_rur`) AS kol1,
SUM(stata2.`cost_rur`) AS cost2,
COUNT(stata2.`cost_rur`) AS kol2,
SUM(stata3.`cost_rur`) AS cost3,
COUNT(stata3.`cost_rur`) AS kol3,
FROM stata1, stats2, stata3
WHERE stata1.`msg` = "' . $pref . '"
AND stata2.`msg` = "' . $pref . '"
AND stata3.`msg` = "' . $pref . '"

одинарные - просто так правильно.

WebGraf » 2010.01.25 10:33

объясните тогда мне ламеру, какая разница в этом случае: одинарные или двойные. и когда их использовать

Gemorroj » 2010.01.25 10:38

http://wapinet.ru/forum/viewtopic.php?id=49

WebGraf » 2010.01.25 10:58

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

Gemorroj » 2010.01.25 12:31

COUNT(stata3.`cost_rur`) AS kol3, убери последнюю запятую))

WebGraf » 2010.01.25 13:33

добавил условие

Код:

1
2
AND stata1.`date` <= "' . $finish . '"
AND stata2.`date` >= "' . $start . '"

и сервер ушел в раздумья))

WebGraf » 2010.01.25 20:18

короче ну его. пусть будет 3 запроса

Gemorroj » 2010.01.25 20:25

на самом деле задача тривиальная. дай небольшой дамп этой бд.

WebGraf » 2010.01.25 20:49

может и так