2011-12-29 4 views
-6

私は2つの機能を持っています。私は1つのようにしたいと思います。質問への参加

機能1

public function getAlliancesList($pageIndex, $pageSize) 
{ 
    return $this->provider->fetchResultSet("SELECT a.id, a.name, a.player_count, a.rating FROM p_alliances a ORDER BY a.rating DESC, a.player_count DESC, a.id ASC LIMIT %s,%s", array($pageIndex * $pageSize, $pageSize)); 
} 

機能2

public function getAllianceAverage($allianceId) 
{ 
    $row = $this->provider->fetchRow("SELECT AVG(p.total_people_count) as average FROM p_players p WHERE p.alliance_id = '%s'", array($allianceId)); 
    return intval($row['average']); 
} 

基本的に私は、関数1に機能2に参加したいので、私は2クエリのを必要としないし、私は、その後にその1つの関数を呼び出すことができますこれが可能であれば、$this->datalist->row['average']のようなテンプレートファイル。

私は2つのクエリを一緒に動作させるために多くの方法を試しましたが、役に立たないので、どんな助けも素晴らしいでしょう。

EDIT:

public function getAlliancesList($pageIndex, $pageSize) 
     { 
      return $this->provider->fetchResultSet("SELECT * 
FROM `p_alliances` 
JOIN `p_players` 
ON `p_players`.`id` = `p_alliances`.`id` LIMIT %s,%s", array($pageIndex * $pageSize, $pageSize)); 
     } 
+0

テーブルの構造は何ですか?どのようにリンクされていますか?あなたは何を試してみることができますか? (そして$ this-> providerとは何ですか?);そして何とかして、これらのクエリは完全に別々のことをしているように見えます(1つは1行、もう1つは複数のものを返します) - その目標は何ですか、なぜそれらを結合したいですか? – codeling

+0

[私はここで似たような質問に答えました、うまくいけば、あなたが理解するのを助けるかもしれません](http://stackoverflow.com/a/8548280/337055) – Philip

+0

does notは私にまだ理解していますyet.Not thatsなぜ私は助けが必要です:) – Dzoki

答えて

2
SELECT 
    a.id, 
    a.name, 
    a.player_count, 
    a.rating, 
    AVG(p.total_people_count) AS `average` 
FROM p_alliances a 
    INNER JOIN p_players p ON (p.alliance_id = a.id) 
GROUP BY a.id 
ORDER BY a.rating DESC, a.player_count DESC, a.id ASC 
LIMIT %s,%s 

0プレイヤーがあるかもしれない場合:私が欲しいもの

が、これは我々が今まで試した方法ですgetAllianceList機能で提携IDを含めるように

ですINNER JOINLEFT JOINに変更することもできますが、mysqlのパフォーマンスに影響する可能性があります。

+0

正常、短く、それは私がそれを好きなので、もう一度ありがとう。 – Dzoki

関連する問題