Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Skompilowane zapytania :p
--Aimar--
post
Post #1





Goście







Witam,
Mam zapytanie jak poniżej:

  1. $refcount = $db->query_first_slave("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE referrerid = $userinfo[userid]");
  2. $referrals = vb_number_format($refcount['count']);


Pokazujące liczbę $refcount['count'] dla wybranego $userinfo[userid]
Teraz od tego potrzebuję zrobić tak, żeby pokazało mi 5 takich wyników począwszy od tego, który będzie miał nawiększą wartość $refcount['count']

Czyli nie podaję w warunku where user = $userinfo[userid] tylko chcę uzyskać pięciu $userinfo[userid] z największą liczbą $refcount['count']

Da się coś takiego mądrze zrobić? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Pozdr,
Aimar
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
jacekl
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 7
Dołączył: 4.05.2008
Skąd: Warszawa

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


Spróbuj tak:

  1. SELECT referrerid, COUNT(*) AS count FROM users GROUP BY 1 ORDER BY 2 DESC LIMIT 5


JL

Ten post edytował jacekl 12.05.2008, 19:27:47
Go to the top of the page
+Quote Post
--Aimar--
post
Post #3





Goście







//Niech ktoś usunie powyższy post, zapomniało mi się slasha przy tagu i nieładnie to wyszło (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

OK, działa :]

Mam takie coś:

  1. <?php
  2. $stat = $vbulletin->db->query("
  3. SELECT `".TABLE_PREFIX."invites`.`user`, COUNT( * ) AS ilosc
  4. FROM `".TABLE_PREFIX."invites`
  5. WHERE accepted != 0
  6. GROUP BY 1
  7. ORDER BY 2 DESC
  8. LIMIT 5;
  9. ");
  10. ?>


Teraz jeszcze tylko pytanie, jak do tego zapytania dołożyć pobieranie nazwy użytkownika (zamiast id (invites`.`user` to id)) - tabela z nazwą użykownika to osobna tabelka ... _user

Próbowałem to zapisać tak:
  1. <?php
  2. $statleech = $vbulletin->db->query("
  3. SELECT `".TABLE_PREFIX."invites`.`user`, COUNT( * ) AS ilosc, `".TABLE_PREFIX."user`.`username`
  4. FROM `".TABLE_PREFIX."invites`, `".TABLE_PREFIX."user`
  5. WHERE `".TABLE_PREFIX."invites`.`accepted` != 0
  6. AND `".TABLE_PREFIX."user`.`username`=`".TABLE_PREFIX."invites`.`user`
  7. GROUP BY 1
  8. ORDER BY 2 DESC
  9. LIMIT 5;
  10. ");
  11. ?>


Ale dostaję błędy o nieistniejącej kolumnie username... tak jakby szukało tej kolumny w _invites zamiast _user
Go to the top of the page
+Quote Post
jacekl
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 7
Dołączył: 4.05.2008
Skąd: Warszawa

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


Trudno cokolwiek powiedzieć nie znając struktury tych tabelek - może pole nazywa się user_name a nie username?
Rzuca się w oczy inny, prawdopodobny błąd:

AND `".TABLE_PREFIX."user`.`username`=`".TABLE_PREFIX."invites`.`user`

Chyba nie chciałeś przyrównywać nazwy do id (które, jak zgaduję, znajduje się w polu invites.user)?

JL
Go to the top of the page
+Quote Post
--Aimar--
post
Post #5





Goście







Ano wlasnie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) wiedzialem ze jakis glupi blad..

Powinienem dac where _user`.`userid` = `_invites`.`user` i z tego wziąć sobie to `_user`.`username` :]

(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Dzięki za pomoc :-)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:59