Mam taką funkcję:
public function procAllianceRanking($limit="") {
$q = "SELECT " . TB_PREFIX . "alidata.name nazwa," . TB_PREFIX . "alidata.id sojid, (
SELECT COUNT( " . TB_PREFIX . "users.alliance )
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.alliance = sojid
)uzytkownicy, (
SELECT sum(pop)
FROM " . TB_PREFIX . "vdata
WHERE owner = (SELECT id FROM " . TB_PREFIX . "users
where alliance = sojid)
) populacja
FROM " . TB_PREFIX . "alidata
ORDER BY populacja DESC";
}
która zwraca mi błąd: Subquery returns more than 1 row, mogę zrobić to w ten sposób:
public function procAllianceRanking($limit="") {
$q = "SELECT " . TB_PREFIX . "alidata.name nazwa," . TB_PREFIX . "alidata.id sojid, (
SELECT COUNT( " . TB_PREFIX . "users.alliance )
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.alliance = sojid
)uzytkownicy, (
SELECT sum(pop)
FROM " . TB_PREFIX . "vdata
WHERE owner = (SELECT id FROM " . TB_PREFIX . "users
where alliance = sojid LIMIT 1)
) populacja
FROM " . TB_PREFIX . "alidata
ORDER BY populacja DESC";
}
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