$query=$this->db->query('SELECT g.gallery_id, g.gallery_title, (
SELECT i.gallery_image_path
FROM nepal_gallery_image AS i
WHERE i.gallery_id = g.gallery_id
AND i.gallery_image_status = "Enabled"
LIMIT 0 , 1) AS gallery_image_path
FROM nepal_gallery AS g
WHERE g.gallery_status = "Enabled"');
上面的查詢給出了正確的輸出。CodeIgniter子查詢的問題
然而,當我使用CI子查詢庫:
$this->load->library('Subquery');
$this->db->select('g.gallery_id,g.gallery_title');
$sub = $this->subquery->start_subquery('select');
$sub ->select('i.gallery_image_path')
->from('nepal_gallery_image AS i')
->where(array('i.gallery_image_status'=>"Enabled",
'i.gallery_id'=>"g.gallery_id"))
->limit(0,1);
$this->subquery->end_subquery('gallery_image_path');
$this->db->from('nepal_gallery AS g');
$this->db->where('g.gallery_stats',"Enabled");
$query=$this->db->get();
結果查詢是:
SELECT `g`.`gallery_id` , `g`.`gallery_title` , (
SELECT `i`.`gallery_image_path`
FROM (`nepal_gallery_image` AS i)
WHERE `i`.`gallery_image_status` = 'Enabled'
AND `i`.`gallery_id` = 'g.gallery_id'
LIMIT 0 , 1) AS gallery_image_path
FROM (`nepal_gallery` AS g)
WHERE `g`.`gallery_status` = 'Enabled'
,並沒有如預期的輸出。
在第一個查詢輸出
<table>
<tr>
<th> gallery_id</th>
<th> gallery_title</th>
<th> gallery_image_path </th>
</tr>
<tr>
<td>1</td>
<td>Gallery 1</td>
<td>images/image1.jpg</td>
</tr>
<tr>
<td>2</td>
<td>Gallery 2</td>
<td>images/image2.jpg</td>
</tr>
</table>
然而,在後來的查詢,輸出是
<table>
<tr>
<th> gallery_id</th>
<th> gallery_title</th>
<th> gallery_image_path </th>
</tr>
<tr>
<td>1</td>
<td>Gallery 1</td>
<td>NULL</td>
</tr>
<tr>
<td>2</td>
<td>Gallery 2</td>
<td>NULL</td>
</tr>
</table>
看來問題是子查詢。
任何人都可以幫助我嗎?
很抱歉,但以何種方式是不是儘可能精確預期? – 2013-04-08 09:13:03
在第一查詢的輸出是 gallery_id gallery_title gallery_image_path 1圖庫1個圖像/ gallery1_1234.jpg 2圖庫2個圖像/ gallery2_1234.jpg 然而,在後來的查詢時,輸出是 gallery_id gallery_title gallery_image_path 1圖庫1 NULL 2 Gallery 2 NULL 看來問題出在子查詢上。 – rohan 2013-04-08 09:53:34
我認爲你應該加上這個問題 – 2013-04-08 09:58:05