我有主義查詢設置與MySQL數據庫:Doctrine_Pager返回錯誤結果與多個GROUPBY列
$q = Doctrine_Query::create(); $q->select('make.id, make.make, model.id, model.year, model.model') ->from('Make make') ->innerJoin('make.Models model'); $q->groupBy('make.id, model.id'); // <-- this is where the problem $q->orderBy('make ASC'); $q->setHydrationMode(Doctrine_Core::HYDRATE_SCALAR); $pager = new Doctrine_Pager($q, 1, 1); // just want one result to prove the concept $items = $pager->execute();
此執行此三個查詢(從MySQL日誌):
SELECT COUNT(*)AS
num_results
FROM(SELECTm
。id
FROMmake
m
INNER JOINmodel
m2
ONm
。id
=m2
。make_id
GROUP BYm
。id
,m2
。id
)dctrn_count_query
SELECT DISTINCT
m3
。id
FROMmake
m3
INNER JOINmodel
m4
ONm3
。id
=m4
。make_id
GROUP BYm3
。id
,m4
。id
ORDER BYm3
。make
ASC LIMIT 1SELECT
m
。id
ASm__id
,m
。make
ASm__make
,m2
。id
ASm2__id
,m2
。year
ASm2__year
,m2
。model
ASm2__model
FROMmake
m
INNER JOINmodel
m2
ONm
。id
=m2
。make_id
其中m
。 IN('33')GROUP BYm
。id
,m2
。id
ORDER BYm
。make
ASC
而結果集是
array
0 =>
array
'make_id' => string '33' (length=2)
'make_make' => string 'Alfa-romeo' (length=10)
'model_id' => string '288' (length=3)
'model_year' => string '2010' (length=4)
'model_model' => string '159' (length=3)
1 =>
array
'make_id' => string '33' (length=2)
'make_make' => string 'Alfa-romeo' (length=10)
'model_id' => string '289' (length=3)
'model_year' => string '2010' (length=4)
'model_model' => string 'MiTo' (length=4)
2 =>
array
'make_id' => string '33' (length=2)
'make_make' => string 'Alfa-romeo' (length=10)
'model_id' => string '290' (length=3)
'model_year' => string '2010' (length=4)
'model_model' => string '159 SPORTWAGON' (length=14)
問題是與返回其在第三查詢用於選擇1個化妝make.id第二查詢(阿爾法 - 羅密歐其具有3種型號) 。我想要的是返回NUMBER OF品牌/型號組合。
如果我更改了Doctrine_Pager回到2項的數量,我得到33行(因爲從兩個選擇,使阿爾法 - 羅密歐有3款車型和奧迪(這是未來)有30種型號。
我在哪裏」中號犯了一個錯誤?