2017-10-06 2 views
0

2 개의 데이터베이스에 가입하고 싶습니다.INNER JOIN 구문 오류

  • 한 데이터베이스가 keyword_data입니다 (키워드 매핑)
  • 한 데이터베이스는 구글 순위 및 기타 통계

어떻게 든 나는이 두 데이터베이스를 가입 할 수으로 가득합니다.

일부 컨텍스트 :

데이터 세트 이름 : 가시성

표 1

keyword_data

VALUES

  • 키워드
  • 우주
  • 카테고리
  • search_volume
  • 클릭당 비용 (CPC)

데이터 세트 이름 : 가시성

표 2

고해상도 ULTS

VALUES

  • 날짜
  • 키워드
  • 웹 사이트
  • 위치 날짜별로 순위 데이터를 수신하기 위해

나는 다음과 같은 SQL 라인을 썼다.

I 표준 SQL (체크되지 않은 기존 SQL)이 구글의 BigQuery를 사용하고

SELECT Date, Position, Website FROM `visibility.results` Keyword INNER 
JOIN `visibility.keyword_data` keyword ON `visibility.results` Keyword 
= `visibility.keyword_data` keyword GROUP BY Date; 

(성공하지 ;-)와 그 외에, 100 다른 라인).

두 데이터 테이블을 어떻게 조인 할 수 있습니까?

+0

예상되는 결과는 무엇입니까? 오류 : SELECT리스트 식을 그룹화하거나 집계되지도 r.Position를 참조 는 그것이 'AS'의 위치를 ​​함께 할 수있는 뭔가가 가능 - 나는 다음과 같은 오류가 :-) 배우고 예를 –

답변

2

SQL에 얼마나 익숙합니까? 난 당신이 이런 식으로 뭔가 내가 구글 빅 쿼리와 함께 일한 적이있는 모든

SELECT r.Date, r.Position, r.Website 
FROM `visibility.results` AS r 
INNER JOIN `visibility.keyword_data` AS k 
ON r.Keyword = k.keyword 
GROUP BY DATE 
+0

을 제공 ? – Marc

+0

Google BigQuery에 익숙하지 않은 것 같습니다. 죄송합니다. – kero

+1

BigQuery에만 국한되지 않습니다. GROUP BY를 사용하면 SELECT 목록의 모든 열이 GROUP BY 목록에 나타나거나 집계 함수 (SUM, COUNT 등)의 결과 일 필요가 있습니다. 예를 들어, '날짜, 위치, 웹 사이트 별 GROUP'이 작동합니다. –

0

먼저 작동해야하지만,이 쿼리 내 의견 잘못된 몇 가지가있다, 잘못된 별칭을 사용하고 생각합니다.

테이블 이름을 포함시켜 테이블을 조인하려면 먼저 테이블이 조인되는 키를 입력해야합니다. 또한 select 문에서 집계 함수 (MIN/MAX 등)를 사용하지 않는 경우 group by 절에 모든 값을 포함해야합니다. Microsoft SQL Server를 사용했다면 도움이 될만한 해결책이 될 것입니다. 왜냐하면 here을 참조하면 구문이 매우 유사하기 때문입니다.

SELECT results.Date AS DATE, 
     ,results.Position AS POSITION 
     ,results.Website AS WEBSITE 
FROM visibility.dbo.keyword_data AS keyword_data 
INNER JOIN visibility.dbo.results AS results 
ON results.keyword = keyword_data.keyword 
GROUP BY results.Date 
     ,results.Position 
     ,results.Website