2012-07-02 3 views
0

응답이 더 이상 필요하지 않습니다. 내 MySQL 데이터베이스에 다음과 같이SQLAlchemy - 여러 테이블 쿼리 및 결과 조합

나는 두 개의 테이블이 있습니다. (아무 중복)

**Child** 
id 
name 
parent_id 

**Parent** 
id 
name 

는 내가하고 싶은 것은 두 테이블을 조회하지 않습니다하지만 독특한 결과를 반환 할 것입니다 내가 두 테이블 어디 검색 할 원하는 아이. name은 LIKE % query %이고 모든 Child 요소를 반환하지만 Parent.name이 LIKE % query % 인 Parent의 모든 자식을 반환하고자합니다. JOIN이 작동한다고 생각하지만 JOIN을 사용하는 방법에 익숙하지 않습니다. 여기

은 몇 가지 예를 들어 데이터 및 출력 :

Child: 
id   1 
name  Jesse 
parent_id 1 

Child: 
id   2 
name  Walter Jr. 
parent_id 1 

Parent: 
id   1 
name  Skylar 

만약 사용자 쿼리 "제시", 그것은 하나 개의 결과를 반환합니다 - 이름 % 제시의 %처럼 아이. 사용자가 "Skylar"를 쿼리하면 부모 _id = Parent.id WHERE Parent.name이 LIKE % Skylar % 인 두 결과를 반환하여 Skylar에 속한 두 자녀를 모두 반환합니다.

미리 감사드립니다.

EDIT : 또한주의 할 점은 자녀에게 부모님이 backref'd했습니다.

+0

모델을 써 주시기 바랍니다 ... – plaes

+0

더 이상 대답이 필요하지 않으면 다른 사람들에게 아무런 도움이되지 않으므로 질문을 삭제하십시오. 또는 귀하의 질문에 대한 답을 제공하고 동의하십시오. – van

답변

1

당신은 (자식 테이블과 부모 테이블 joined에) 두 번째 쿼리에서 일치와 (단지 자식 테이블에) 하나 개의 쿼리에서 일치를 결합 UNION를 사용할 수 있습니다

SELECT id, name 
FROM Child 
WHERE name LIKE '%query%' 

UNION 

SELECT Child.id, Child.name 
FROM Parent JOIN Child ON Child.parent_id = Parent.id 
WHERE Parent.name LIKE '%query%' 
+0

고맙습니다. :) 그게 내가 찾고있는 것입니다. 이제 SQLAlchemy로이 문제를 어떻게 해결할 것인지 읽어보십시오. – user1492385