2012-06-12 5 views
1

일부 제품은 다른 속성을 가지고 있으므로 다른 제품을 나타 내기 위해 몇 가지 테이블을 설정했습니다.루프 내에서 루프 mysql 수

특정 도시에서 얼마나 많은 항목이 나열되는지 계산하려고합니다. 내 SQL 문은 다음과 같습니다 :

Select count(*) as count from location, tbl_books where location.city = tbl_books.location && location.city = 'London' && location.country = 'United Kingdom' 

Select count(*) as count from location, tbl_clothes where location.city = tbl_clothes.location && location.city = 'London' && location.country = 'United Kingdom' 

이 루프는 국가 내의 모든 도시에서 결과를 계산합니다. 이러한 루프는 내부 ​​루프를 나타냅니다. 외부 루프는 다른 범주 테이블을 반복합니다.

나는 이것이 매우 효율적이지 않으며 누군가가이 문제를 다루는 방법을 제안 할 수 있는지 궁금해하고있었습니다. 도시와 카테고리 필드가있는 마스터 테이블을 작성하고 특정 도시에서 새 항목을 추가 할 때마다 마스터 테이블의 수를 증가시키는 것만으로 생각했습니다.

+5

.... – andrewsi

답변

1

이 검색어는 모든 도시와 국가의 도서 수를 제공하며 루프가 필요하지 않습니다.

SELECT 
    location.country, 
    location.city, 
    COUNT(*) as `count` 
FROM locaton 
INNER JOIN tbl_books ON location.city = tbl_books.location 
GROUP BY location.country, location.city 
ORDER BY location.country, location.city 

결과는 다음과 같이 표시됩니다 내가 거기에 어떤 루프를 볼 수

country   | city | count 
-----------------+-----------+----------- 
France   | Paris  | 1 
United Kingdom | Belfast | 2 
United Kingdom | London | 3 
... 
+0

이 중대하다, 나는 다른 카테고리 테이블에서 카운트에이 카운트를 추가하는 방법에 대한 어떻게 갈 것인가? –

+0

나는 그것이 얼마나 많은 테이블과 구조에 달려 있는지 확실하지 않습니다. 어쩌면 당신은 그것에 대해 별도의 질문을해야합니다. – bfavaretto

1

다음 SQL 쿼리는 table.city 키와 tbl_books.location 키를 결합하여 count 및 location.city 값을 하나의 쿼리로 반환합니다.

Select count(*) as count, location.city 
from location, tbl_books 
where location.city = tbl_books.location 
group by location.city 
1

이 (테스트되지 않은, 내 머리에서) 영국의 모든 도시를 위해, 도시의 모든 책을 요약한다 :

select tbl_books.location, count(tbl_books.location) as count 
from location inner join tbl_books on location.city = tbl_books.location 
where location.country = 'United Kingdom' 
group by tbl_books.location 

결과를 다음과 비슷한 모습이 될 것입니다

location | count 
-------------------- 
London | 5 
-------------------- 
Newcastle | 1 
-------------------- 
...  | ...