2015-01-26 1 views
1

입니다. 그러나이 작업을 잘못하고 있지만 두 개의 조인 된 테이블의 결과를 중복해서 조합하는 것이 잘못되었습니다.하나의 쿼리 결과를 다른 결과의 하위 배열로 사용하면

나는 두 개의 테이블 eventsgoing을 가지고 있습니다. 내가 뭘 하려는지 events에서 행을 가져 와서 하위 배열로 동일한 EventID을 가진 going의 모든 행을 나열하는 쿼리가 있습니다. 뭔가 같은 : 아마도

"1":[ 
    { 
    EventID: '1' 
    EventName: 'test' 
    Going: { 
    UserID:'testname' 
    UserID:'testname2' 
    } 
    } 
] 

또는 모두 한 줄에 사용자 이름을 가진 나는이 쿼리를 사용하고 같은 UserID: 'testname', 'testname2'

:

"SELECT * FROM events AS ev INNER JOIN going AS go ON ev.EventID = go.EventID WHERE ev.EventID = $eventID" 

을 내가 대신 같은 결과를 얻고있다 :

"1":[ 
    { 
    EventID: '1' 
    EventName: 'test' 
    UserID:'testname' 
    } 
    { 
    EventID: '1' 
    EventName: 'test' 
    UserID:'testname2' 
    } 
] 

중복 된 데이터를 모두 제거하고 대신 gr을 제거 할 수있는 방법이 있습니까? 하위 배열에 있습니까?

끔찍한 코딩/형식화를 용서해주십시오. 전 완벽한 SQL 멍청한 놈입니다.하지만 가능하다면 이것을 수행하는 방법을 찾지 못하는 것 같습니다. 바라기를 나는 맹세하고있다.

미리 감사드립니다.

+0

을 내가 그것을 그런 식으로 일을 할 수 없다 생각합니다. 하지만이 방법을 수행 할 수 있습니다 : testname, testname2 경우에만 SQL을 사용하는 경우 –

+0

그것도, 어떻게 할 줄 알았겠습니까? – Kony2013

답변

2

SELECT e.EventID, e.EventName, GROUP_CONCAT(g.UserID) Going 
    FROM events AS e INNER JOIN going AS g 
    ON e.EventID = g.EventID 
WHERE e.EventID = ? 
GROUP BY e.EventID, e.EventName 

출력 할 수 있습니다

다음
 
| EVENTID | EVENTNAME |    GOING | 
|---------|-----------|--------------------| 
|  1 |  test | testname2,testname | 

인을 SQLFiddle 데모

그리고 explode()going 열은 결과 집합 반복하고 생산하는 동안 귀하의 JSON. 보조 노트에


: 쿼리 문자열 보간을 사용하여 정지. 대신 prepared statements을 배우고 사용하십시오.

+0

감사합니다! 사이드 노트와 관련하여 필자는 다른 어떤 것보다 먼저 구문을 이해하는데 초점을 맞추고있다. – Kony2013

+0

@ Kony2013 매우 환영합니다. 행운을 빕니다 :) – peterm

0

하나의 쿼리로는이 작업을 수행 할 수 없습니다. 이벤트 테이블에서 eventId 및 관련 데이터를 가져와야합니다. 그런 다음 eventId로 진행 테이블을 쿼리하고 프로그래밍 논리를 통해 필요한 array/json을 만듭니다.

1

이 같은 MySQL을의 GROUP_CONCAT, 뭔가를 사용할 수 있습니다

SELECT ev.EventID, ev.EventName, GROUP_CONCAT(go.UserID) AS UserIDs 
FROM events AS ev INNER JOIN going AS go ON ev.EventID = go.EventID 
WHERE ev.EventID = $eventID 
GROUP BY ev.EventID, ev.EventName 

여기에 바이올린을 작업 방법을 참조하십시오 : http://sqlfiddle.com/#!2/aa4875/11

관련 문제