2011-08-09 3 views
1

내 웹 사이트에 Zend Framework를 사용하고 있으며 PostgreSQL 데이터베이스에서 일부 데이터를 가져오고 싶습니다. 이 요청은 잘 작동하지만 젠드와 DISTINCT ON (e.id)를 변환하는 방법을 모르는DISTINCT 특정 열과 함께 Zend를 사용하여 select를 작성하는 방법은 무엇입니까?

SELECT DISTINCT ON(e.id) e.*, f.*, g.* FROM e, f, g 
WHERE e.id = f.id_e AND f.id = g.id_f 

:

나는 같은 요청을해야합니다. DISTINCT 행을 얻을 수 있지만 별개의 열은없는 것으로 보입니다.

$select->distinct()->from("e")->join("f", "e.id = f.id_e") 
->join("g", "f.id = g.id_f"); 

고유 한 열을 사용하여 선택하는 방법에 대한 아이디어가 있으십니까? 도움

당신은 아마 distinct on 이후 젠드 프레임 워크와 함께이 작업을 수행 할 수
+0

MySQL을 사용하여이 작업을 수행하려는 사람들에게 다음과 같이 설명 할 수 있습니다. http://framework.zend.com/manual/en/zend.db.select.html/#zend.db .select.building.distinct 젠드 1.11.11 및 MySQL 5.5.20을 사용하여 나를 위해 작동 –

답변

1

에 대한

덕분에 SQL 표준 (end of page in Postgres documentation)의 일부가 아닙니다. Postgres가 지원하지만, 이론상으로 지원하지 않는 다른 데이터베이스 연결을 구성 할 수 있기 때문에 Zend Framework의 일부가 아닌 것으로 가정합니다.

특정 데이터베이스 (이 경우 Postgres)를 개발 중이라는 것을 미리 알고 있다면 수동으로 작성된 명령문을 대신 사용할 수 있습니다. 더 이상 데이터베이스를 전환 할 수없는 비용으로 더 나은 유연성과 쿼리 성능을 얻을 수 있습니다.

그러면 Postgres에 Zend_Db_Apdapter을 인스턴스화합니다. SQL 쿼리에 대한 결과를 얻는 데 사용할 수있는 다양한 방법이 있습니다. 자세한 내용은 Reading Query Results 섹션에서 시작하는 프레임 워크 설명서를 참조하십시오. 이 경로를 선택하면 Zend_Db_Adapter_Pgsql 클래스의 자체 하위 클래스를 만드는 것이 좋습니다. 이는 데이터 유형을 변환하고 모호한 null 값을 리턴하거나 오류 원인을 숨기지 않고 오류가 발생할 경우 예외를 던지기위한 것입니다.

+0

답변 주셔서 감사합니다. 다른 해결책이 있습니까? 어쩌면 젠드 내 SQL 요청을 작성하는 방법? – Salah

+0

예, [쿼리 결과 읽기] 링크 (http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.select)는 손으로 쓴 쿼리의 몇 가지 예를 가리 킵니다. ZF와. –

관련 문제