2011-11-01 7 views
0

두 테이블이 있습니다. 하나는 노래 목록입니다. 다른 하나는 프로젝트 목록입니다.특정 ID가있는 조인 된 테이블의 모든 행 수를 계산하는 방법

그들은 노래 ID로 합류했습니다. 내 쿼리는 현재 다음과 같습니다. -

$sQuery = " 
     SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." 
     FROM $sTable 
     LEFT JOIN 
      $sTable2 
      ON ($sTable2.songs_id = $sTable.songsID) 
     $sWhere 
     $sOrder 
     $sLimit 
    "; 
    $rResult = mysql_query($sQuery, $gaSql['link']) or die(mysql_error()); 

$ sTable 및 $ sTable2 변수는 두 테이블로 명확하게 나타납니다.

이것은 제대로 작동하며 '$ sTable'에있는 모든 행을 나열합니다. 위의 JOIN은 노래 목록을 표시하는 것이 아니라 제한된 MySQL 기능을 사용할 수있는 한 내 것입니다.

내가하고 싶은 것은 '$ sTable'의 각 노래에 대해 $ sTable2에있는 모든 프로젝트의 총 개수를 표시하는 JSON 데이터에 다른 열을 반환하고 싶습니다. 따라서 특정 '노래 ID'가있는 각 프로젝트를 계산합니다.

$aColumns = array('song_name', 'artist_band_name', 'author', 'song_artwork', 'song_file', 'genre', 'song_description', 'uploaded_time', 'emotion', 'tempo', 'songsID', 'user', 'happiness', 'instruments', 'similar_artists', 'play_count'); 

다음은 $ 안정의 열은 또한에 노래를 연결하는 '$ sTable2'에 저장되어있는 'songsID'자동 증가 기본 키 인 상태입니다 - :

$ a 열과는 다음입니다 그들의 프로젝트.

위의 $ aColumns 배열에 'projects_count'를 추가 할 수 있어야합니다.

이번에는 나 자신을 더 잘 설명해 주었으면합니다. 내 SQL 경험이 절대적으로 미미하다는 사과.

답변

2
select count(*) as projects_count, a.songs_id 
from Table2 a 
group by a.songs_id 

이렇게하면 songs_id 당 프로젝트 수를 알 수 있습니다.

또한으로 특정 song_id에 대해 조회 할 수 있습니다

select count(*) as projects_count 
from Table2 where Table2.songs_id = <your_song_id> 

그리고이 :

select b.*, bb.projects_count from Table b 
left join (
    select count(*) as projects_count, a.songs_id 
    from Table2 a 
    group by a.songs_id 
) bb on bb.songs_id = b.songsID 
+0

단순하고 간결한 : –

+0

덕분에,이 그러나 내가 MySQL로 정말 새로운 오전 확실하지 오전 완벽 내 JOIN 내에서 구현하여 각 노래에 대한 총 프로젝트 수 ($ sTable2)를 포함하는 추가 된 열 'projects_count'로 $ sTable의 모든 노래를 반환하는 쿼리를 하나 갖도록하는 방법. 이 문제를 명확히 밝히기는 어렵지만 지금까지 도움을 주신 덕분에 :-) – gordyr

+0

@gordyr 모든 projects_count가있는 표 1의 모든 열 (노래 열)을 가져 오는 추가 쿼리를 추가했습니다. –

관련 문제