BG Development


Страници: (5) 1 2 [3] 4 5   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> MySQL не мога да направя сумата
3p0
Публикувано на: 12-02-2019, 01:16
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



php не харесва нито:
CODE
Notice: Undefined index: SUM_SCORED_BG .... index.php on line 473

нито:
CODE
Notice: Undefined index: X .... index.php on line 473

Останалото работи без грешка.

CODE
                $sql = "SELECT p.PLAYER_ID, p.NAME_BG, p.TEAM_MAIN_BG, p.PERIOD_BG_BEG, p.PERIOD_BG_END,       p.MATCHES_BG, p.SCORED_BG, p.TEAM_BG_ID FROM PLAYERS AS p CROSS JOIN ( SELECT SUM(SCORED_BG) AS SUM_SCORED_BG FROM PLAYERS WHERE `TEAM_BG_ID` = ". $teams_arr[$j] ." ) AS X WHERE p.TEAM_BG_ID = ". $teams_arr[$j] ." ORDER BY `SCORED_BG` DESC";
                $result = $conn->query($sql);
                $num_r = $result->num_rows;
                if ($num_r > 0)
                {
                    while ($row = $result->fetch_assoc())
                        {
                          echo "<tr>";
                             echo "<td>". $row["PLAYER_ID"] ."</td>";
                             echo "<td>". $row["NAME_BG"] ."</td>";
                             echo "<td>". $row["TEAM_MAIN_BG"] ."</td>";
                             echo "<td>". $row["PERIOD_BG_BEG"] ."</td>";
                             echo "<td>". $row["PERIOD_BG_END"] ."</td>";
                             echo "<td>". $row["MATCHES_BG"] ."</td>";
                             echo "<td>". $row["SCORED_BG"] ."</td>";
                          echo "</tr>";
                              $teambg = $row["TEAM_MAIN_BG"];
                              $sum_sc = $row["X"];                                          // index.php line 473
                        }
                      echo "<tr>";
                    echo "<td>". "</td>";
                    echo "<td>". "Обща сума голове от отбора" ."</td>";
                    echo "<td><b>". $teambg ."</b></td>";
                    echo "<td>". "</td>";
                    echo "<td>". "</td>";
                    echo "<td>". "</td>";
                    echo "<td><b>". $sum_sc ."</b></td>";
                      echo "</tr>";
                }
                else
                     {
                    echo "0 results";
                }


Грешката я дава само в един ред, каквото и да напиша там, все не е както трябва:
index.php line 473: $sum_sc = $row["SUM_SCORED_BG"];
index.php line 473: $sum_sc = $row["X"];

Това мнение е било редактирано от 3p0 на 12-02-2019, 01:40


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
dvader
Публикувано на: 12-02-2019, 09:37
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4575
Регистриран на: 12.07.05



Мен ако питаш, отработи си заявката на "чист" SQL преди да почнеш да се мъчиш да я завираш в РНР.


--------------------
I find your lack of faith disturbing
PM
Top
3p0
Публикувано на: 12-02-2019, 09:47
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



CODE
SELECT p.PLAYER_ID, p.NAME_BG, p.TEAM_MAIN_BG, p.PERIOD_BG_BEG, p.PERIOD_BG_END,       p.MATCHES_BG, p.SCORED_BG, p.TEAM_BG_ID FROM PLAYERS AS p CROSS JOIN ( SELECT SUM(SCORED_BG) AS SUM_SCORED_BG FROM PLAYERS WHERE TEAM_BG_ID = 7 ) AS X WHERE p.TEAM_BG_ID = 7 ORDER BY p.SCORED_BG DESC

Заявката в чист MySQL дава резултат, но не се появява допълнителна колона X, в която очаквам да е сумата.

Това мнение е било редактирано от 3p0 на 12-02-2019, 09:49


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
thrawn
Публикувано на: 12-02-2019, 09:56
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2490
Регистриран на: 17.01.17



CODE
SELECT
      p.PLAYER_ID,
      p.NAME_BG,
      p.TEAM_MAIN_BG,
      p.PERIOD_BG_BEG,
      p.PERIOD_BG_END,      
      p.MATCHES_BG,
      p.SCORED_BG,
      p.TEAM_BG_ID
FROM PLAYERS AS p
CROSS JOIN (
      SELECT
            SUM(SCORED_BG) AS SUM_SCORED_BG
      FROM PLAYERS
      WHERE TEAM_BG_ID = 7
) AS X
WHERE p.TEAM_BG_ID = 7
ORDER BY p.SCORED_BG DESC


Ми, то в тая заявка, допълнителна колона Х няма...
Научи се да си форматираш кода, че не те знам как си го разчиташ дори сам.
PMEmail Poster
Top
3p0
Публикувано на: 12-02-2019, 10:08
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



Отивам да търся с търсачката какво прави "CROSS JOIN"
и какво прави " .... AS X ... "
Това X ми звучеше точно като допълнителна колона icon_idea.gif


Разгледах пример за кръстосано присъединяване на таблица B към таблица A.
Двете таблици са с по 3 реда и с по 3 колони:
На 1 ред от A добавят отдясно 1 ред от B
На 1 ред от A добавят отдясно 2 ред от B
На 1 ред от A добавят отдясно 3 ред от B
На 2 ред от A добавят отдясно 1 ред от B
На 2 ред от A добавят отдясно 2 ред от B
На 2 ред от A добавят отдясно 3 ред от B
На 3 ред от A добавят отдясно 1 ред от B
На 3 ред от A добавят отдясно 2 ред от B
На 3 ред от A добавят отдясно 3 ред от B
И така получиха нова таблица с 9 реда и 6 колони

При мен имам таблица p с 3 реда и 8 колони
Имам още една таблиса с 1 ред и 1 колона
Би следвало към 1 ред от p да се присъедини отдясно първи ред от другата
Би следвало към 2 ред от p да се присъедини отдясно първи ред от другата
Би следвало към 3 ред от p да се присъедини отдясно първи ред от другата
И да се получи една таблица с 3 реда и 9 колони


Да, ама не icon_idea.gif

Това мнение е било редактирано от 3p0 на 12-02-2019, 10:37


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
thrawn
Публикувано на: 12-02-2019, 10:40
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2490
Регистриран на: 17.01.17



НЕ-то при теб е, че НЕ показваш нищо от втората таблица (Х) показваш само от първата (P). Затова ти форматирах заявката, та та видиш, че извеждаш САМО p.*. Демек, ако всичко е наред, трябва само да добавиш x.SUM_SCORED_BG в списъка и нещата ще тръгнат.

Но пък исках, сам да достигнеш до това прозрение...

Това мнение е било редактирано от thrawn на 12-02-2019, 10:43
PMEmail Poster
Top
Антон Яначков
Публикувано на: 12-02-2019, 10:41
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 1217
Регистриран на: 27.07.16



Защо си усложняваш живота безпричинно? Аз бих опростил заявката без да сумирам нищо във вида:
CODE

SELECT
     p.PLAYER_ID,
     p.NAME_BG,
     p.TEAM_MAIN_BG,
     p.PERIOD_BG_BEG,
     p.PERIOD_BG_END,      
     p.MATCHES_BG,
     p.SCORED_BG,
     p.TEAM_BG_ID
FROM PLAYERS
WHERE p.TEAM_BG_ID = 7
ORDER BY p.SCORED_BG DESC

След което виждам, че ти използваш цикъл за визуализация. Просто сумирай в него головете и накрая след цикъла просто ги визуализирай. Добавяш си една измислена променлива в цикъла и си натрупваш головете в нея. Предлагам ти просто, елементарно и четливо решение.
PMEmail PosterUsers Website
Top
3p0
Публикувано на: 12-02-2019, 10:52
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



Яначков,
Целта е да се получат резултатите за няколко десетохилядни от секундата, за да се избегне възможността, докато сумирам в цикъл някой да промени базата дани и в крайна сметка да не може да се получи разминаване между показаните отделни стойности и крайната сума.
Това нещо ми беше подсказано по-нагоре в темата.
( Аз го правех с две заявки, които обаче протичат с няколко секунди разлика. )
С една заявка ще бъде мълниеносно и верно.


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
3p0
Публикувано на: 12-02-2019, 11:14
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



QUOTE (thrawn @ 12-02-2019, 10:40)
НЕ-то при теб е, че НЕ показваш нищо от втората таблица (Х) показваш само от първата (P). Затова ти форматирах заявката, та та видиш, че извеждаш САМО p.*. Демек, ако всичко е наред, трябва само да добавиш x.SUM_SCORED_BG в списъка и нещата ще тръгнат.

Но пък исках, сам да достигнеш до това прозрение...

Изводът за мен е, че X не е колона, а таблицата, която се присъединява кръстосано към таблица p.
( Би било добре ако се бях досетил сам )


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
3p0
Публикувано на: 12-02-2019, 12:34
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 672
Регистриран на: 18.06.05



Работещата божествена заявка е следната:
CODE

SELECT
          p.PLAYER_ID,
          p.NAME_BG,
          p.TEAM_MAIN_BG,
          p.PERIOD_BG_BEG,
          p.PERIOD_BG_END,
          p.MATCHES_BG,
          p.SCORED_BG,
          p.TEAM_BG_ID,
          x.SUM_SCORED_BG
FROM PLAYERS AS p
CROSS JOIN (
             SELECT SUM( SCORED_BG ) AS SUM_SCORED_BG
             FROM PLAYERS
             WHERE TEAM_BG_ID =7
           ) AS x
WHERE p.TEAM_BG_ID =7
ORDER BY p.SCORED_BG DESC

Сам по никой начин нямаше да я измисля icon_idea.gif

Това мнение е било редактирано от 3p0 на 12-02-2019, 12:54


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (5) 1 2 [3] 4 5  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0