вопрос по sql

Discussion in 'PHP' started by malik555, 6 Feb 2009.

  1. malik555

    malik555 New Member

    Joined:
    4 Feb 2009
    Messages:
    132
    Likes Received:
    1
    Reputations:
    0
    Добрый день

    Code:
    
    $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 раза больше чем записанно ?
     
  2. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    судя по факу он выдает сумму столбца. перепроверь данные в БД.
     
  3. malik555

    malik555 New Member

    Joined:
    4 Feb 2009
    Messages:
    132
    Likes Received:
    1
    Reputations:
    0
    когда считаем в адной таблице то все правельно

    Code:
    
    $u = mysql_query("SELECT  
    
     SUM(money) as l_money         
    
    FROM   admin");                                    
    
    $u = mysql_fetch_array($u);
    
    
    
    print " $u[l_money]"; 
    
    

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

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Дело тут в этом
    Code:
    FROM      users,admin
    По сути это есть декартово произведение, т.е. комбинация всех столбцов в первой таблице и всех столбцов во второй таблице. Мало того что это неправильно, так это еще и жрет вычислительные ресурсы :)
    Сделать можно так (если я правильно понял структуру):
    Code:
    SELECT
    (SELECT SUM(money) FROM users) AS u_money,
    (SELECT SUM(money) FROM admin) AS a_money
    
     
    #4 VDShark, 7 Feb 2009
    Last edited: 7 Feb 2009
  5. malik555

    malik555 New Member

    Joined:
    4 Feb 2009
    Messages:
    132
    Likes Received:
    1
    Reputations:
    0
    А почему с UPDATE так не получается

    Code:
    mysql_query("UPDATE     (UPDATE users SET money='ppp'  WHERE id='edfcf01055043f5b473ba4365ebb8f78')    ");
     
  6. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Эм... во первых так не получится, а во вторых я стесняюсь спросить - ты чего хочешь сделать то?)
     
  7. malik555

    malik555 New Member

    Joined:
    4 Feb 2009
    Messages:
    132
    Likes Received:
    1
    Reputations:
    0
    я оптимизирую запросы на сайте , Мне так полюбился sql - что я теперь - все пытаюсь впихнуть в один запрс с кучей параметров - и проверок !
     
  8. MuXaJIbI4

    MuXaJIbI4 Member

    Joined:
    20 Nov 2008
    Messages:
    66
    Likes Received:
    7
    Reputations:
    0
    а ты уверен что запихнув все в один запрос работаь будет быстрее ... сделай EXPLAIN для своих запросов и подумай еще раз