Вы не зашли.
Главная »
SQL » Объединение SELECT из нескольких таблиц
Как объединить запросы по выводу значений таблиц понятно, а как если нужно сумму вывести?
К примеру
Код:
| SELECT SUM(`cost`) FROM `stata` WHERE `mes`="' . $pref . '"; |
| SELECT SUM(`cost`) FROM `stata2` WHERE `mes`="' . $pref . '"; |
| SELECT SUM(`cost`) FROM `stata3` WHERE `mes`="' . $pref . '"; |
Отредактировано WebGraf (2010.01.24 09:09)
Код:
| (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 . '"); |
неработает в таком примере
вот если без суммы то выборка чудесно происходит
должно быть ок
Вложения
1.png
98kb
{1288x1004}
[
загрузок: 1210]
как тогда сумму вывести на страницу?
$var['SUM(`cost`)'] - не выводит ничего у меня
$var['SUM(`stata`.`cost`)'] выводит только 1 таблицы, только смысл унион отпадает
можно использовать нумерованный массив, а не ассоциативный, можно в запросе указать алиас через оператор AS ( ... SUM(`stata`.`cost`) AS v FROM ....)
Код:
| $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']; |
в чем ошибка?
#8.
Gemor
Гость
2010.01.24 17:05
Код:
| (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); |
Код:
| $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']; |
Выводит сумму из первой таблицы
Ты все данные вгоняешь в переменные с именами cost и kol. Давай разным выборкам разные имена.
Код:
| $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 только
Код:
| $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 . '" |
| ')); |
ну чтото подобное с чего я начинал, только cost не 1 а 3
Добавлено спустя 4 минуты 24 секунды: можно вопрос - почему вы используете одинарные кавычке вместо двойных? в этом случае тестировал много раз на скорость выполнения, разницы нету
Отредактировано WebGraf (2010.01.24 20:08)
ничего не выводит
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
на последнюю строку where ... ));
Отредактировано WebGraf (2010.01.24 21:09)
что-то я туплю
Код:
| 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 . '" |
одинарные - просто так правильно.
объясните тогда мне ламеру, какая разница в этом случае: одинарные или двойные. и когда их использовать
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
COUNT(stata3.`cost_rur`) AS kol3
, убери последнюю запятую))
добавил условие
Код:
| AND stata1.`date` <= "' . $finish . '" |
| AND stata2.`date` >= "' . $start . '" |
и сервер ушел в раздумья))
короче ну его. пусть будет 3 запроса
на самом деле задача тривиальная. дай небольшой дамп этой бд.