Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błąd Subquery returns more than 1 row
Simonell
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.08.2012

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


Mam taką funkcję:
  1. public function procAllianceRanking($limit="") {
  2. $q = "SELECT " . TB_PREFIX . "alidata.name nazwa," . TB_PREFIX . "alidata.id sojid, (
  3.  
  4. SELECT COUNT( " . TB_PREFIX . "users.alliance )
  5. FROM " . TB_PREFIX . "users
  6. WHERE " . TB_PREFIX . "users.alliance = sojid
  7. )uzytkownicy, (
  8.  
  9. SELECT sum(pop)
  10. FROM " . TB_PREFIX . "vdata
  11. WHERE owner = (SELECT id FROM " . TB_PREFIX . "users
  12. where alliance = sojid)
  13.  
  14. ) populacja
  15.  
  16. FROM " . TB_PREFIX . "alidata
  17. ORDER BY populacja DESC";
  18. return mysql_query($q);
  19. }

która zwraca mi błąd: Subquery returns more than 1 row, mogę zrobić to w ten sposób:
  1. public function procAllianceRanking($limit="") {
  2. $q = "SELECT " . TB_PREFIX . "alidata.name nazwa," . TB_PREFIX . "alidata.id sojid, (
  3.  
  4. SELECT COUNT( " . TB_PREFIX . "users.alliance )
  5. FROM " . TB_PREFIX . "users
  6. WHERE " . TB_PREFIX . "users.alliance = sojid
  7. )uzytkownicy, (
  8.  
  9. SELECT sum(pop)
  10. FROM " . TB_PREFIX . "vdata
  11. WHERE owner = (SELECT id FROM " . TB_PREFIX . "users
  12. where alliance = sojid LIMIT 1)
  13.  
  14. ) populacja
  15.  
  16. FROM " . TB_PREFIX . "alidata
  17. ORDER BY populacja DESC";
  18. return mysql_query($q);
  19. }

Ale chciałbym, żeby zliczyła mi pop ze wszystkich użytkowników, i tu jest problem, jak to zrobić bez wyżej wymienionego błędu, może jakaś funkcja w mysqlu albo coś, proszę o pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


  1. WHERE owner =


Skoro stawiasz znak równości to kolejne pod zapytanie nie może zwrócić 2 rekordów, na szczęście w mysql mamy IN

Ten post edytował d3ut3r 28.08.2012, 04:36:21


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
Simonell
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.08.2012

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


Dzięki wielkie, siedziałem nad tym tyle czasu i nie mogłem tego zrobić smile.gif .

Ten post edytował Simonell 28.08.2012, 08:07:11
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 - 18:39