我試圖用Kohana's query builder來建立一個UNION查詢。一切正常,直到我添加一個GROUP BY或ORDER BY子句。如何在Kohana的查詢構建器中使用ORDER BY和GROUP BY構建UNION查詢?
這裏是我正在使用的代碼(簡化):
$query1 = DB::select('p.name')
->from(array('person', 'p'))
->where('p.organization', 'LIKE', 'foo%')
->limit(10);
$names = DB::select('sh.name')
->union($query1, FALSE)
->from(array('stakeholder', 'sh'))
->where('sh.organization', 'LIKE', 'foo%')
->group_by('name')
->order_by('name')
->limit(10)
->execute()
->as_array();
而是在整個查詢的末尾添加GROUP BY和ORDER BY的,它會立即在第二個查詢後添加。
這是本生成SQL:
SELECT sh.name FROM stakeholder AS sh WHERE sh.organization LIKE 'foo%'
GROUP BY name ORDER BY name LIMIT 10
UNION
SELECT p.name from person AS p WHERE p.organization LIKE 'foo%' LIMIT 10;
我要的是:
SELECT sh.name FROM stakeholder AS sh WHERE sh.organization LIKE 'foo%'
UNION
SELECT p.name from person AS p WHERE p.organization LIKE 'foo%'
GROUP BY name ORDER BY name LIMIT 10;
你能告訴我們它生成的SQL,和你期望的SQL? – Charles 2011-04-09 03:56:38