2012-05-23 2 views

답변

3

PostgreSQL을 당신을 위해 연결을 할 것 ARRAY_AGG 기능이 있습니다. 예 : 위의 내가 SQL Fiddle

1

당신이 USER_ID 컬럼에 인덱스가 가정, 당신이 뭔가를 할 수 있습니다 :

select u.*, s.* 
from Users u 
inner join Settings s on (u.id = s.user_id); 
1

다음 쿼리는 내가 잘 이해하면 당신이 원하는 일을해야 ...

SELECT Users.*, Settings.* 
FROM Users 
JOIN Settings ON Settings.user_id = Users.id 
+0

이 그룹화 자신의 설정을 하나의 행을 반환 작동하지만 내가 원하는 것은 각 사용자에 대해 인에 생성 된 스키마를 기반으로되도록

SELECT Users.ID, ARRAY_AGG(COALESCE(Name || ' : ' || Value, '')) AS Settings FROM Users LEFT JOIN Settings ON Users.ID = Settings.User_ID GROUP BY Users.ID 

테이블 구조는 조금 애매 결과의 '설정'에서 –

+0

그래서 한 명의 사용자와 관련된 설정이 더 많습니까? – aleroot

1

GROUP_CONCAT을 시도하십시오

mysql에서 이렇게 하시겠습니까?

SELECT u.id, GROUP_CONCAT(s.id) 
FROM Users u 
INNER JOIN Settings s ON u.id = s.user_id 
GROUP BY u.id; 

편집 :

의 PostgreSQL 버전 :

SELECT u.id, STRING_AGG(s.id) 
FROM Users AS u 
INNER JOIN Settings AS s ON u.id = s.user_id 
GROUP BY u.id; 
+2

PostgreSQL에는'group_concat' 함수가 없습니다. 동등한 PostgreSQL 함수는'string_agg'입니다. –