2012-07-27 6 views
4

저는 PHP와 MySQL로 소셜 미디어 뉴스 집계 웹 앱을 구축하고 있습니다. 다양한 URL (열 URL)을 특정 경향 (열 trend_id)에 매핑해야합니다. 여기 내 더미 데이터 구조입니다 :여러 쿼리 행을 하나로 결합하기

Sample data

I (예 : 12) 특정 trend_id의 URL을 가져 오는 쿼리를 작성해야합니다. 이것은 간단하다 :

선택 urltrend_id = '12'이

이제 몇 가지 경향은 특정 ​​부모 추세 관련된 url_table FROM. (url_table 곳에서 trend_id = '12'또는 trend_id = '16'

SELECT '12'parent_trend_id로, url 예를 들어 12, 16 및 45 부모 trend_id 관련된 trend_ids (12) 그래서 여기 내 쿼리 01 parent_trend_id 같은

SELECT '345'url : trend_id OR = '45')

여기에 유사한 쿼리의 다른 예이다WHERE (trend_id = '345'trend_id OR = '457'trend_id OR = '16')

문제 등 여러 상위있다이다 - 흐름 사이에 자식 관계. 지금은 PHP 내에서 for 루프를 실행하고 여러 쿼리를 실행합니다. 또한 내 앱의 특성상 부모 추세는이 표의 일부가 될 수 없습니다. 같은 쿼리를 여러 번 수행하는 단일 쿼리를 사용할 수 있습니까?

편집 :

나는 아이에게 관계를 정의하는 별도의 테이블이있다. 이것은 ID, trend_id (parent) 및 related_trend_id (child)가있는 간단한 3 열의 테이블입니다. 그러나 하나의 related_trend_id (하위)는 여러 개의 trend_ids (상위)를 가질 수 있습니다.

SELECT r.trend_id as parent_trend_id,url 
FROM url_table 
Join relations r on r.related_trend_id = childid 
WHERE r.trend_id = 12 

또는 나를 위해 예상대로

SELECT r.trend_id as parent_trend_id,url 
FROM url_table 
Join relations r on r.related_trend_id = childid 

작품 정확히 그들 모두를 얻을 : 당신은 특정 쿼리가 지금 것

Relations table sample data

+0

이 테이블을 사용하기 위해 쿼리를 업데이트했습니다 ... 정상적으로 작동합니다. – Hogan

답변

2

다음은 관계 테이블의 스냅 샷입니다 :

http://sqlfiddle.com/#!3/b137a/9

결과는 무엇입니까?

+0

아이가 여러 명일 수 있으므로 아마도 작동하지 않을 수 있습니다. 글쎄, 단순히 여러 Select 문에 대한 결과를 하나로 결합하는 방법이 있습니까? 모든 행을 이와 같이 결합하는 것처럼? –

+0

@AkshayRaje는 바이올린을 봅니다. – Hogan

+1

SQL 서버에서 행을 결합 할 수 있지만 mysql에서 수행하는 방법을 모르겠습니다. 클라이언트 프로그램에서이 작업을 수행하는 것이 좋습니다. PHP는 이러한 종류의 문자열 조작에 더 좋습니다. – Hogan

0

부모 - 자식 관계가 포함 된 테이블에 가입 하시겠습니까?

SELECT url_table.* 
FROM url_table 
INNER JOIN parents 
    ON url_table.trend_id = parents.trend_id 
WHERE parents.parent_id IN (1,2,3); 

(1,2,3) 당신이 튜플을 추출하고자하는 모든 부모 추세를 제공합니다.

+0

그는 부모 테이블이 없습니다. – Hogan

+0

@Hogan 부모 자녀 관계가있는 테이블이 있습니다. 편집에 넣을 것입니다 –

+0

@AkshayRaje - ROFL, 좋은 대답을 원할 때 도움이 될 수 있습니다. – Hogan

관련 문제