Вы не зашли.
Главная » SQL » Объединение SELECT из нескольких таблиц
#1. WebGraf Off (1)
Участник
2010.01.24 12:12
Как объединить запросы по выводу значений таблиц понятно, а как если нужно сумму вывести?
К примеру
Код:
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 12:12)
#2. Gemorroj On (107)
Administrator
2010.01.24 13:01
UNION
#3. WebGraf Off (1)
Участник
2010.01.24 16:04
Код:
(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 . '");
неработает в таком примере
вот если без суммы то выборка чудесно происходит
#4. Gemorroj On (107)
Administrator
2010.01.24 16:04
должно быть ок
Вложения
1.png 98kb {1288x1004} [загрузок: 925]
#5. WebGraf Off (1)
Участник
2010.01.24 16:04
как тогда сумму вывести на страницу?
$var['SUM(`cost`)'] - не выводит ничего у меня
$var['SUM(`stata`.`cost`)'] выводит только 1 таблицы, только смысл унион отпадает
#6. Gemorroj On (107)
Administrator
2010.01.24 17:05
можно использовать нумерованный массив, а не ассоциативный, можно в запросе указать алиас через оператор AS ( ... SUM(`stata`.`cost`) AS v FROM ....)
#7. WebGraf Off (1)
Участник
2010.01.24 19:07
Код:
$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 20:08
Код:
(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);
#9. WebGraf Off (1)
Участник
2010.01.24 20:08
Код:
$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'];
Выводит сумму из первой таблицы
#10. Gemorroj On (107)
Administrator
2010.01.24 21:09
Ты все данные вгоняешь в переменные с именами cost и kol. Давай разным выборкам разные имена.
#11. WebGraf Off (1)
Участник
2010.01.24 21:09
Код:
$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 только
#12. Gemorroj On (107)
Administrator
2010.01.24 21:09
Код:
$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 . '"
'));
#13. WebGraf Off (1)
Участник
2010.01.24 23:11
ну чтото подобное с чего я начинал, только cost не 1 а 3
Добавлено спустя   4 минуты  24 секунды:

можно вопрос - почему вы используете одинарные кавычке вместо двойных? в этом случае тестировал много раз на скорость выполнения, разницы нету
Отредактировано WebGraf (2010.01.24 23:11)
#14. WebGraf Off (1)
Участник
2010.01.24 23:11
ничего не выводит
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
на последнюю строку where ... ));
Отредактировано WebGraf (2010.01.25 00:12)
#15. Gemorroj On (107)
Administrator
2010.01.25 09: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 . '"
одинарные - просто так правильно.
#16. WebGraf Off (1)
Участник
2010.01.25 10:10
объясните тогда мне ламеру, какая разница в этом случае: одинарные или двойные. и когда их использовать
#17. Gemorroj On (107)
Administrator
2010.01.25 10:10
http://wapinet.ru/forum/viewtopic.php?id=49
#18. WebGraf Off (1)
Участник
2010.01.25 10:10
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
#19. Gemorroj On (107)
Administrator
2010.01.25 12:12
COUNT(stata3.`cost_rur`) AS kol3, убери последнюю запятую))
#20. WebGraf Off (1)
Участник
2010.01.25 13:01
добавил условие
Код:
AND stata1.`date` <= "' . $finish . '"
AND stata2.`date` >= "' . $start . '"
и сервер ушел в раздумья))
#21. WebGraf Off (1)
Участник
2010.01.25 20:08
короче ну его. пусть будет 3 запроса
#22. Gemorroj On (107)
Administrator
2010.01.25 20:08
на самом деле задача тривиальная. дай небольшой дамп этой бд.
#23. WebGraf Off (1)
Участник
2010.01.25 20:08
может и так
Страниц: 1 2 3 Все
Главная
WEB
PunBB Mod v0.6.2
0.022 s