PDA

Просмотр полной версии : вопрос по sql


malik555
06.02.2009, 21:54
Добрый день



$u = mysql_query("SELECT

SUM(users.money) as u_money,
SUM(admin.money) as l_money

FROM users,admin");

$u = mysql_fetch_array($u);


print "$u[u_money] <br/> $u[l_money]";





Почему он выдат суму в 2 раза больше чем записанно ?

blaga
07.02.2009, 07:33
судя по факу он выдает сумму столбца. перепроверь данные в БД.

malik555
07.02.2009, 14:54
когда считаем в адной таблице то все правельно



$u = mysql_query("SELECT

SUM(money) as l_money

FROM admin");

$u = mysql_fetch_array($u);



print " $u[l_money]";




а когда в двух то результат в 2 раза больше

VDShark
07.02.2009, 16:01
Дело тут в этом
FROM users,admin
По сути это есть декартово произведение, т.е. комбинация всех столбцов в первой таблице и всех столбцов во второй таблице. Мало того что это неправильно, так это еще и жрет вычислительные ресурсы :)
Сделать можно так (если я правильно понял структуру):

SELECT
(SELECT SUM(money) FROM users) AS u_money,
(SELECT SUM(money) FROM admin) AS a_money

malik555
13.02.2009, 01:06
А почему с UPDATE так не получается

mysql_query("UPDATE (UPDATE users SET money='ppp' WHERE id='edfcf01055043f5b473ba4365ebb8f78') ");

VDShark
13.02.2009, 14:43
Эм... во первых так не получится, а во вторых я стесняюсь спросить - ты чего хочешь сделать то?)

malik555
13.02.2009, 16:03
я оптимизирую запросы на сайте , Мне так полюбился sql - что я теперь - все пытаюсь впихнуть в один запрс с кучей параметров - и проверок !

MuXaJIbI4
13.02.2009, 16:43
а ты уверен что запихнув все в один запрос работаь будет быстрее ... сделай EXPLAIN для своих запросов и подумай еще раз