'business_id'및 'city_id'라는 두 개의 테이블을 'business'및 'cities'뿐만 아니라 두 개의 필드가있는 'associations'라는 세 번째 다 대다 관계 테이블을 포함하는 데이터베이스가 있습니다. '. 한 비즈니스는 여러 도시를 포괄 할 수 있으며 한 도시는 여러 비즈니스로 포괄 될 수 있습니다.SQL 쿼리는 단일 관계를 기반으로하는 다 대다 관계를 고갈 중입니까?
이제는 각 사업체를 관련된 도시와 함께 나열하고 싶습니다. 이렇게 :
SELECT
businesses.rowid,
businesses.name,
GROUP_CONCAT(cities.name, ', ') as citylist
FROM businesses
JOIN associations ON businesses.rowid = associations.business_id
JOIN cities ON cities.rowid = associations.city_id
GROUP BY businesses.rowid
그리고 이것은 완벽하게 작동합니다. 그러나 제가 실제로하고 싶은 일은 주어진 도시와 관련된 비즈니스를 정확히 똑같은 방법으로 나열하는 것입니다. 그러나이 방법을 찾지 못했지만 GROUP_CONCAT(cities.name, ', ')
은 모든 도시가 연결된 대신 지정된 도시 만 반환합니다. 그것이이 나는 현재 SQLite는 3를 사용하고 솔루션에 대한 중요한 경우
0: [rowid] = 42
[name] = Generic Business
[citylist] = New York, Jamestown, Albany
1: [rowid] = 31
[name] = Arbitrary Ltd.
[citylist] = Fulton, New York, Lockport
하지만, I : 도시 "뉴욕"주어진 경우
는 임의의 예로서,이 같은 결과를 원하는 것 필요한 경우 변경하는 것에 완전히 반대하지 않습니다.
고맙습니다. 완벽하게 작동합니다. :) 한 가지 작은 점은 질문에 영어로 테이블 이름을 번역 할 때 오타를 만들었고 두 번째 JOIN에 associations.city_id 대신 associations.business_id를 넣는 것입니다. 나는 그것을 고쳤지만 시간이 지나지 않았기 때문에 오류가 대답에 반영됩니다. 어쩌면 당신은 그것을 바꾸고 싶을 것입니다. :) – kvolden