Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd Subquery returns more than 1 row
Forum PHP.pl > Forum > Bazy danych > MySQL
Simonell
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
d3ut3r
  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
Simonell
Dzięki wielkie, siedziałem nad tym tyle czasu i nie mogłem tego zrobić smile.gif .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.