2013-06-22 2 views
1

JOIN 테이블 작동 방식에 대해 매우 혼란 스럽습니다. 나는 좋은 것을 얻지 않고 모든 가능한 문서를 읽으려고했다. 많은 테이블을 가입시키는 방법?

나는 특정 사용자의 모든 데이터를 얻기 위해 다양한 테이블에 큰 SELECT을하려고하고있다. 아래 쿼리는 좋은 결과없이 영원히 반복됩니다.

사람이 올바른 방법으로 JOIN을 할 수있는 가장 쉬운 방법으로 설명 할 수 있습니까? 당신은 모든 행이 다른 모든과 결합되어있는 직교 제품, 끝낼 수 있도록 감사

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation FROM user,user_addfields_anagraphic,user_addfields_legal,user_addfields_public,user_addfields_social,user_registration WHERE user.id_user = '43534534534' 
+1

작동하는 쿼리에 대한 테이블 구조에 대한 자세한 정보가 필요합니다. @ Gautam3164의 코드는 원하는 구조입니다. – exussum

+0

[documentation] (http://dev.mysql.com/doc/refman/5.0/en/)을 공부하십시오. join.html). 두 테이블 간의 단일 조인으로 시작하십시오. 이것을 이해하면 세 테이블 간의 조인으로 이동하십시오. –

+0

남자, 여기 당신의 대답은 모두 http://www.w3schools.com/sql/sql_join.asp – rkpasia

답변

1

SELECT table1.* , 
    table2.* , 
    table3.* 
    FROM table1 
    JOIN table2 ON .... 
    JOIN table3 ON.... 
+0

JOIN table 2 ON .... 뭐라구? 이것은 내가 이해하지 못하는 것입니다. 그 논리는 무엇입니까? ;/ –

+1

테이블 1을 table1.value = table2.value에 조인합니다. 당신은 멀티 테이블 정보를 얻기 위해 데이터 간의 관계를 사용해야합니다 – exussum

+0

네 @ user1281385처럼 ... – Gautam3164

2

당신은 어떤 의미있는 방식으로 함께 테이블을 조인하지 않습니다 같은 시도 열.

당신은 (우리가 상대하고있는 관계형 데이터베이스입니다) 서로 관련을 다음 있도록 각 테이블의 열을 찾을 수있다.

그래서 당신은 부서에있는 직원을 알고 싶다면, 당신은

select name, department 
from employee emp join Department d 
on emp.dept_no = d.dept_no 
where dept.description = "SALES" 

인식 할 수있는 중요한 건 같은 것을 할 것 조인 조건입니다 - 그것은 당신이 한 테이블의 내용을 어떻게 관련되는지 지정 다른 하나.

귀하의 진술은 매우 복잡합니다. 훨씬 더 작은 조각으로 나누는 것이 좋습니다. 작동하려면 두 테이블 조인을 가져온 다음 점차적으로 다른 테이블을 추가하십시오.

0

다른 테이블을 조인해야합니다. 제 생각 엔 위의 예에서

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation 
FROM user 
INNER JOIN user_addfields_anagraphic on user.user_id = user_addfields_anagraphic.user_id 
... 
WHERE user.id_user = '43534534534' 

또는 같은

(동일 함)

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation 
FROM user, user_addfields_anagraphic, ... 
WHERE user.id_user = '43534534534' and 
user.user_id = user_addfields_anagraphic.user_id and 
... 

: 나는

당신이 뭔가를 할 수있는 당신의 where 절에서 이것을 발견 할수 없어 그 user_addfields_anagraphic.user_id는 "user_id"라는 테이블 사용자의 기본 키에 대한 외래 키입니다.

위와 같이이 구문으로 다른 테이블을 조인해야합니다. 그러나 여러 테이블에서 선택하려고하면 where 절을 사용하여 다른 테이블을 조인 할 수 없습니다.

관련 문제