• Главная
  • » SQL
  • » Объединение SELECT из нескольких таблиц

#1 2010.01.24 12:57

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Объединение SELECT из нескольких таблиц

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

Код:

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 . '";

Отредактировано WebGraf (2010.01.24 12:58)

Неактивен

#2 2010.01.24 13:36

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

UNION

Неактивен

#3 2010.01.24 16:17

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

Код:

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 . '");

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

Неактивен

#4 2010.01.24 16:29

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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


Вложения

Неактивен

#5 2010.01.24 16:43

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#6 2010.01.24 17:00

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#7 2010.01.24 19:22

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

Код:

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'];

в чем ошибка?

Неактивен

#8 2010.01.24 20:03

Gemor
Гость

Re: Объединение SELECT из нескольких таблиц

Код:

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);

#9 2010.01.24 20:43

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

Код:

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'];

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

Неактивен

#10 2010.01.24 21:11

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#11 2010.01.24 21:22

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

Код:

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 только

Неактивен

#12 2010.01.24 21:59

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

Код:

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 . '"
'));

Неактивен

#13 2010.01.24 23:40

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

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

Отредактировано WebGraf (2010.01.24 23:47)

Неактивен

#14 2010.01.24 23:54

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Отредактировано WebGraf (2010.01.25 00:21)

Неактивен

#15 2010.01.25 09:45

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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

Код:

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 . '"

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

Неактивен

#16 2010.01.25 10:33

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#17 2010.01.25 10:38

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

Неактивен

#18 2010.01.25 10:58

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#19 2010.01.25 12:31

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#20 2010.01.25 13:33

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Код:

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

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

Неактивен

#21 2010.01.25 20:18

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#22 2010.01.25 20:25

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6543
Карма: 108
Профиль Веб-сайт

Re: Объединение SELECT из нескольких таблиц

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

Неактивен

#23 2010.01.25 20:49

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: Объединение SELECT из нескольких таблиц

может и так

Неактивен

  • Главная
  • » SQL
  • » Объединение SELECT из нескольких таблиц

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.1
0.017 s