[SQL] 젠드 DB를 사용하여 하위 쿼리 작성
SQL젠드 DB를 사용하여 하위 쿼리 작성
나는 젠드 DB 쿼리에 아래의 SQL을 돌려 몇 가지 문제가 발생하고있다.
$select = ' SELECT s.id, i.id as instance_id, i.reference, i.name, i.sic_code, i.start_date
FROM sles s
JOIN sle_instances i
ON s.id = i.sle_id
WHERE i.id = ( SELECT MAX(id)
FROM sle_instances
WHERE sle_id = s.id
)
ORDER BY i.name ASC';
내가 전에 멀리 코드와 같이 가지고있다 -하지만 젠드 DB는 제대로 쿼리를 생성하지 않습니다. 하나는 내가 무엇을 놓치고 저를 보여줄 수 ??
$select = $db->select() ->from('sles', array( 'id',
'instance_id' => 'sle_instances.id',
'reference' => 'sle_instances.reference',
'name' => 'sle_instances.name',
'sic_code' => 'sle_instances.sic_code',
'start_date' => 'sle_instances.start_date'
)
)
->join('sle_instances', 'sles.id = sle_instances.sle_id')
->where('sles.id = (SELECT MAX(id) FROM sle_instances WHERE sle_id = sles.id)')
->order('sle_instances.name ASC');
는 SQL은 방법으로 작업을 수행합니다. 내가 젠드 매기기 기능을 사용하여 원하는대로 내가 젠드 DB를 사용하여 다시 작성하고 있습니다.
어떤 도움도 대단히 감사합니다.
PJ
해결법
-
==============================
1.이:
이:
$select = $db->select()->from(array("s" => "sles"), array("s.id","i.id as instanceid","i.reference","i.name","i.sic_code","i.start_date")) ->join(array('i' => "sle_instances"),"s.id = i.sle_id",array()) ->where("i.id = (select max(id) from sle_instances where sle_id = s.id)") ->order('i.name asc');
이것은 제공합니다 :
"SELECT `s`.`id`, `i`.`id` AS `instanceid`, `i`.`reference`, `i`.`name`, `i`.`sic_code`, `i`.`start_date` FROM `sles` AS `s` INNER JOIN `sle_instances` AS `i` ON s.id = i.sle_id WHERE (i.id = (select max(id) from sle_instances where sle_id = s.id)) ORDER BY `i`.`name` asc"
-
==============================
2.당신이 원한다면, 당신은 karim79 @ 한 일 걸릴 수 있으며뿐만 아니라 () 선택>은 $ this-으로 부속을 설정 ...
당신이 원한다면, 당신은 karim79 @ 한 일 걸릴 수 있으며뿐만 아니라 () 선택>은 $ this-으로 부속을 설정 ...
$subselect = $db->select() ->from('sle_instances', array(new Zend_Db_Expr('max(id)'))) ->where('sle_id = s.id'); $select = $db->select()->from(array("s" => "sles"), array("s.id","i.id as instanceid","i.reference","i.name","i.sic_code","i.start_date")) ->join(array('i' => "sle_instances"),"s.id = i.sle_id",array()) ->where("i.id = ($subselect)") ->order('i.name asc'); print($select); //SELECT `s`.`id`, `i`.`id` AS `instanceid`, `i`.`reference`, `i`.`name`, `i`.`sic_code`, `i`.`start_date` FROM `sles` AS `s` INNER JOIN `sle_instances` AS `i` ON s.id = i.sle_id WHERE (i.id = (SELECT max(id) FROM `sle_instances` WHERE (sle_id = s.id))) ORDER BY `i`.`name` asc
-
==============================
3.나는 매우 비슷한 문제가 있었다 나는 다음과 같이 쿼리를 쉽게 기록 할 수 있다는 것을 발견 :
나는 매우 비슷한 문제가 있었다 나는 다음과 같이 쿼리를 쉽게 기록 할 수 있다는 것을 발견 :
$select = $db->select() ->from ( array("s" => "sles"), array( "s.id", "instanceid" => "i.id", "i.reference", "i.name", "i.sic_code", "i.start_date") ) ->join( array('i' => "sle_instances"), "s.id = i.sle_id", array() ) ->where ("i.id = (" . $db->select() ->from('sle_instances', array(new Zend_Db_Expr('max(id)'))) ->where('sle_id = s.id'); .")") ->order('i.name asc'); print($select);
사람들이 이미 여기에 언급 한 것처럼 정확히 동일합니다. 그러나 나는 하위 쿼리 의존성이 더 분명하기 때문에 읽기 조금 더 쉽게 느꼈다.
-
==============================
4.좋은 질문! 이 하나 주셔서 감사합니다. 또한 당신은 주문 후 그룹을하려고하는 경우, 당신은 또한 다음과 매우 유사한하여이 구문을 사용할 수 있음을 던져 원
좋은 질문! 이 하나 주셔서 감사합니다. 또한 당신은 주문 후 그룹을하려고하는 경우, 당신은 또한 다음과 매우 유사한하여이 구문을 사용할 수 있음을 던져 원
$subquery = $this->_datawarehouse->select() ->from('revenueLog') ->where('Date '.$ReturnDate) ->order('Date DESC'); $this->view->end = microtime(); $format = new Zend_Db_Expr('DATE_FORMAT(`Date`,"%d-%m-%y")'); $select = $this->_datawarehouse->select() ->from(array('subquery'=>$subquery)) ->group('Client') ->group($format) ->order('Vertical ASC') ->order('Revenue DESC'); echo $select->__ToString(); $stmt = $this->_datawarehouse->query($select); $data = $stmt->fetchAll();
$ ReturnDate 궁금 누군가를 위해 보통되고 끝나는 사용자 입력에 따라 문자열 인 "BETWEEN '날짜 1'AND 'DATE2'"
from https://stackoverflow.com/questions/1340564/writing-a-subquery-using-zend-db by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 동적 순서 방향 (0) | 2020.06.10 |
---|---|
[SQL] 여러 열 평균 (0) | 2020.06.09 |
[SQL] 어떻게이에 상관 이름이 조인 SQL 해결할 수 있습니다? (0) | 2020.06.09 |
[SQL] (SQL에서) COMMIT 문은 지금까지 실패 할 수 있습니까? 어떻게? (0) | 2020.06.09 |
[SQL] 어떻게 어떤 행을 반환하지 않는 쿼리에 대한 기본 행을 설정하는 방법? (0) | 2020.06.09 |