Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ciężki orzech do zgryzienia
Bourne18
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2004

Ostrzeżenie: (0%)
-----


WIęc tak :
Mam jedną tablice gdzie są user-y

id login
1 aaa
2 bbb
... ....

Oraz drugą o nazwie GRY

id Gracz1 Gracz2 Gracz3 Gracz4
1 aaa ||||| fff ||||| ggg ||||| bbb
1 ccc ||||| rrr ||||| zzz ||||| aaa


I teraz co potrzebuje .. Chodzi o zliczenie ile każdy gracz ktory jest w tabeli USERS wystepuje w tabeli GRY w polach (Gracz1 Gracz2 Gracz3 Gracz4) , oraz żeby wyświetliło mi 10 najcześciej występujących.

Jak probowałem :

[php:1:c0a51ebd78]<?php


$users_zapy="SELECT login FROM liga_users ";
$users_wyk=mysql_query($users_zapy);
$users_num=mysql_num_rows($users_wyk);

while ($users_row=mysql_fetch_array($users_wyk) ) {
$gracze_zapy="SELECT login ,
COUNT(login) as ile
FROM liga_mecze WHERE Gracz1 ='$users_row[login]' OR Gracz2 ='$users_row[login]' OR Gracz3 ='$users_row[login]' OR Gracz4 ='$users_row[login]'
ORDER BY ile
LIMIT 10";
$gracze_wyk=mysql_query($gracze_zapy);
$gracze_row=mysql_fetch_array($gracze_wyk);
echo "$users_row[login] ->>> $gracze_row[ile]";
}//koniec while
?>[/php:1:c0a51ebd78]

Niestety COUNT nie chce zadziałać w momencie jak wstawiam COUNT zapytanie wogóle nie działa. I co tu zrobić ?
Go to the top of the page
+Quote Post
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zobacz to:
[sql:1:61353470f2]SELECT COUNT(g.id) AS ile, u.login FROM gry g, users u WHERE g.gracz1=u.login OR g.gracz2=u.login OR g.gracz3=u.login OR g.gracz4=u.login GROUP BY u.id ORDER BY ile DESC LIMIT 10[/sql:1:61353470f2]


--------------------

Go to the top of the page
+Quote Post
KeeKee
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.05.2003
Skąd: Gdynia, Poland

Ostrzeżenie: (0%)
-----


[php:1:2ae22bb852]<?php
$gracze_zapy="SELECT COUNT(login) as ile
FROM liga_mecze
WHERE Gracz1 ='".$users_row['login']."'
OR Gracz2 ='".$users_row['login']."'
OR Gracz3 ='".$users_row['login']."'
OR Gracz4 ='".$users_row['login']."'
ORDER BY ile LIMIT 10";
?>[/php:1:2ae22bb852]Sprawdz to.


--------------------
Z poważaniem,
cert|KeeKee
http://cert-clan.com
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A co mu to da?
Moje zapytanie (o ile sie nie rąbnąłem gdzieś tongue.gif) powinno w jednym zapytaniu wyciagnąć 10 użytkowników najczęściej występujących. Tymczasem Twój i jego sposób, jest wysoce nieefektwny, ponieważ pobiera wszystkie loginy (a jak będzie ich 1000) i dla każdego wykonuje zapytanie. Czyli zamiast jednego zapytania moze być 1001 (1000 uzytkownikow + 1 początkowe). Poza tym nie wyświetli 10 najczęściej występujących, tylko wszystkich z dodaną liczbą wystąpień.


--------------------

Go to the top of the page
+Quote Post
Bourne18
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2004

Ostrzeżenie: (0%)
-----


Spenalzo żeby nie było błędu w moim przepisywaniu to pytam dla pewności , zapytanie powinno wyglądać tak :

[sql:1:017fa1bd8f]$users_zapy="SELECT COUNT(mecze_id) AS ile , login
FROM liga_mecze , liga_users
WHERE gracz1='login' OR gracz2='login' OR gracz3='login' OR gracz4='login'
GROUP BY uzy_id
ORDER BY ile DESC
LIMIT 10 ";[/sql:1:017fa1bd8f]

?

UZY_ID - jest primary w USERS
MECZE_ID jest primary w GRY

Tak wpisałem i nawet pętli mi nie chce zacząć

while ( $users_row=mysql_fetch_array($users_wyk) ) { .....

czyli chyba coś nie działa sad.gif
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie. Powinno wyglądać tak jak napisałęm.


--------------------

Go to the top of the page
+Quote Post
spenalzo
post
Post #7





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Gotowe zapytanie, sprawdź czy działa i jak działą - jak coś źle to napisz co mysql_error powiedział. smile.gif
[php:1:7d2d44f7e8]<?php
$q=mysql_query("SELECT COUNT(g.id) AS ile, u.login FROM gry g, users u WHERE g.gracz1=u.login OR g.gracz2=u.login OR g.gracz3=u.login OR g.gracz4=u.login GROUP BY u.id ORDER BY ile DESC LIMIT 10") or die(mysql_error());
while($t=mysql_fetch_array($q))
{
echo $t["login"]." - ".$t["ile"]."<br>";
}
?>[/php:1:7d2d44f7e8]


--------------------

Go to the top of the page
+Quote Post
Bourne18
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2004

Ostrzeżenie: (0%)
-----


Spenalzo już podziękowałem na webhelp , także dodaje jedynie punkt . Dzięki once more .


Edit : Klikam na "pomógł mi" ale nie podświetla się twój post. Coś nie tak ?
Go to the top of the page
+Quote Post
spenalzo
post
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Musisz wejśc przez http://forum.php.pl i/lunb wyłączyć na chwile firewalla :|


--------------------

Go to the top of the page
+Quote Post
Bourne18
post
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2004

Ostrzeżenie: (0%)
-----


hmmm , trzeba przez alias dodać pkt , ja wchodze przez www.php.pl i nie chciało zaskoczyć , ale pkt jest.
Go to the top of the page
+Quote Post
-webmaniac-
post
Post #11





Goście







Witam, tymczasem ja próbowałem kilkukrotnie przetworzyć skrypt żeby wyświetlał 10 najczęściej występujących w bazie nicków - baza: BAZA i kolumna z nickami: NICK. Baza zawiera ponad 1000000 wpisów także skrypt musiałby być szybki :-).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:50