2017-11-20 5 views
0

안녕하세요. 저는 musicbrainz 데이터베이스를 사용하고 있으며 각 국가별로 모든 아티스트를 계산하는 데 어려움을 겪고 있습니다. 그러나 어떤 국가에서든 같은 오류가 발생해도 상관 없습니다. 누군가 내가 잘못한 것을 보여줄 수 있습니까?musicbrainz 국가 별 아티스트 수를 계산할 수 없습니다.

ERROR: column "%u%" does not exist LINE 7: WHERE AREA.NAME LIKE "%u%"

SELECT COUNT(artist.name) 
FROM artist 
JOIN area ON artist.area = area.id 
JOIN label ON area.id = label.area 
JOIN country_area ON area.id = country_area.area 
JOIN release_country ON country_area.area = release_country.country 
WHERE AREA.NAME LIKE "%dom" 
GROUP BY release_country.country 
limit 5; 

UPDATE : 선생님 그냥 와서는 늘 하위 쿼리에서 작업을했다

musicbrainz_db=> SELECT COUNT(artist.name) 
musicbrainz_db-> FROM artist 
musicbrainz_db-> JOIN area ON artist.area = area.id 
musicbrainz_db-> JOIN label ON area.id = label.area 
musicbrainz_db-> JOIN country_area ON area.id = country_area.area 
musicbrainz_db-> JOIN release_country ON country_area.area = 
release_country.country 
musicbrainz_db-> WHERE AREA.NAME LIKE '%dom' 
musicbrainz_db-> GROUP BY release_country.country 
musicbrainz_db-> limit 5; 

ERROR: canceling statement due to statement timeout

?

select area.name, label_count 
from area 
where label_count in 
(
    select area.name, count(label.id) as "label_count" 
    from area 
    JOIN label on area.id = label.area 
    group by area.name 
); 

하위 쿼리는 정상적으로 작동하지만 기본 쿼리는 실패합니까? 어떤 생각인지.

+0

에 사용되는 작은 따옴표와 시도는 더 많은 코드 .. plase을 보여줍니다. 이 쿼리를 사용하는 코드 표시 – scaisEdge

+0

double 대신 작은 따옴표로 시도하십시오. 또한 보통 (거의 항상?) LIMIT 문과 함께 SELECT TOP을 사용하려고합니다. –

+0

메신저가 터미널에서 내부 서버로 실행 중이면 모든 코드를 확인할 수 있습니다. – edwin

답변

0
SELECT COUNT(artist.name) 
FROM artist 
JOIN area ON artist.area = area.id 
JOIN label ON area.id = label.area 
JOIN country_area ON area.id = country_area.area 
JOIN release_country ON country_area.area = release_country.country 
WHERE AREA.NAME LIKE '%u%' 
GROUP BY release_country.country 
limit 5; 
0

참조 MySQL의 공식 문서

https://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html

SELECT COUNT(artist.name) 
FROM artist 
JOIN area ON artist.area = area.id 
JOIN label ON area.id = label.area 
JOIN country_area ON area.id = country_area.area 
JOIN release_country ON country_area.area = release_country.country 
WHERE AREA.NAME LIKE '%dom' 
GROUP BY release_country.country 
limit 5; 

따옴표가 열 이름