Преобразование запроса с подзапросом в предложении SELECT в построитель запросов CodeIgniterPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Преобразование запроса с подзапросом в предложении SELECT в построитель запросов CodeIgniter

Сообщение Anonymous »

Код: Выделить всё

$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"'
);
Приведенный выше запрос дает правильный результат.
Однако, когда я использую библиотеку подзапросов 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'
и вывод не такой, как ожидалось.
вывод в первом запросе

Код: Выделить всё

    

 gallery_id
 gallery_title
 gallery_image_path 


1
Gallery 1
images/image1.jpg


2
Gallery 2
images/image2.jpg


Однако в более позднем запросе результат будет

Код: Выделить всё

    

 gallery_id
 gallery_title
 gallery_image_path 


1
Gallery 1
NULL


2
Gallery 2
NULL


Похоже, проблема связана с подзапросом.

Подробнее здесь: https://stackoverflow.com/questions/158 ... ry-builder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»