2013-08-19 5 views
-1

안녕 동료 프로그래머 2 개의 다른 coloumns,는 MySQL의 내부는 내 문제가 조금 더 설명하기 위해 두 밝혔다 테이블의 일부

에 2 개 개의 다른 테이블의 가입 열의 그들은 공통점을 가지고 있습니다.

표 1은 고객 ID, 성, 회사, 거리, 우편 번호, 도시, 범주 및 기타 고객 테이블입니다.

표 2는 예약 테이블에 이름, 성, 회사, 거리, 우편 번호 및 도시가 있습니다. 표 2에는 Coloums Room_ID, Date, Customer_ID 및 기타 항목이 추가로 있습니다. 어리석은 건 : Customer_ID가 일부 항목에서 비어 있습니다.

이제 룸을 예약 한 Costumer 테이블의 모든 Person 데이터를 얻어야합니다.

약간의 재검토 후, 골짜기 http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-JoinsHow to do an INNER JOIN on multiple columns을 읽은 후, 이것을 위해 내부 결합이 필요하다고 생각합니다.

내 문제는 How to do an INNER JOIN on multiple columns에서 권장되는 접근법이 내가 필요한 것에 적합하지 않다는 것입니다. 왜냐하면 동일한 soloumn에서 2 회의 coloumn과 2 회의 결합을 원하지 않기 때문입니다. 이것은 지금까지 내 쿼리입니다

:

'Select needed cloumns 
       FROM customer AS tbl1 
      INNER JOIN booking AS tbl2 
        ON tbl1.firstname=tbl2.firstname AND tbl1.lastname=tbl2.lastname 
       WHERE '.$searchterms.' 
      GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date' 

는 내가 필요로하는 힌트, explantion 또는이다 : 여기

'SELECT tbl1.ID, tbl1.company, tbl1.title, tbl1.lastname, tbl1.fistname, tbl1.street, tbl1.city, tbl1.zipcode, tbl1.phone, tbl1.email, tbl1.category_ID, tbl1.Hotel_ID, tbl2.* 
       FROM customer AS tbl1 
      INNER JOIN booking AS tbl2 
        ON 
       WHERE '.$searchterms.' 
      GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date' 

는이 같아야에 참여하는 방식의 일부 의사 코드 해결책을 생각해 내는데 도움이되는 링크와 저는 매우 감사 할 것입니다. 설명 된 문제와 관련하여 일종의 정전이 있습니다. 네가 나를 도울 수 있기를 바랍니다.

답변

-1

미안 내 대답이 잘못되었지만 질문이 올바르지 않으나 어쨌든이 답변에 최선을 다할 것입니다. 조인 목적은 두 테이블의 데이터에 대해 여러 관련 테이블을 쿼리 할 수 ​​있다는 것입니다. 이미 알고 있다고 생각하지만 요점은 고유해야하는 두 테이블간에 연결 영역이 필요하다는 것입니다. 두 번째 테이블 (외래 키)의 customerId가 첫 번째 (기본 키)의 고객 ID 여야하며, 연결이 완료되면 조건을 사용하여 검색을 구체화 할 수 있습니다. 두 테이블 간의 연결은 "ON"으로 수행되지만 실수로 "where"절과 혼동하는 것처럼 보입니다. 그래서, 나는 당신이 필요로 대답 희망, 곧

SELECT tbl1.*, tbl2.* 
FROM tbl1 INNER JOIN tbl2 
ON tbl1.id=tbl2.Customer_ID 
WHERE WhateverConditions 
GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room 

그것을 대답.

+0

당신이 제 질문을 아주 잘 이해했다고 생각합니다.문제는 예약 테이블의 customer_id가 일부 항목에 대해 누락되어 있으며이를 찾아서 삽입하는 것이 거의 불가능하다는 것입니다. 이 오류는 기존 시스템의 작은 확장을 생성하라는 명령을 받기 전에 몇 년 전에 인터페이스를 프로그래밍 한 사람에게 기인합니다. – TheMansn

+0

이 질문과 다른 점은 누락 된 필드를 업데이트하고 누락 된 데이터를 채우고 테이블에 필드를 작성하는 스크립트를 실행하여 미래에 이러한 일이 발생하지 않도록하고 그런 다음 질문. 누락 된 데이터를 업데이트하는 경우 사용 가능한 데이터에 대한 쿼리를 실행하여 각각에 대한 customer_id를 검색 한 다음 다른 테이블에 대한 업데이트 쿼리를 검색 할 수 있습니다. 장면을 만들지는 모르지만 이것이 내 데이터를 유지하는 방법입니다. –

+0

오케이, 한번 시도해 보겠습니다. 그래서 "데이터 메인 턴"스크립트는 대략 다음과 같을 것입니다 : '단계 1 : 고객 테이블에서 성, 성, ID 및 주소 얻기 2 단계 : 예약 테이블 의 모든 항목과 성, 성 및 주소 비교 2 단계 : 3 단계 : 일치하는 것을 찾으면 예약 테이블 의 고객 테이블 ID를 고객 테이블에 입력합니다. 4 단계 : 고객 테이블에서 모든 항목을 #까지 # 3까지 반복하십시오. – TheMansn

0
'SELECT ID, company, title, lastname, fistname, street, city, zipcode, phone, email,  category_ID, Hotel_ID 
      FROM customer AS tbl1 
     INNER JOIN booking AS tbl2 
       ON tbl1.id=tbl2.id 
      WHERE relevantcolumn='searchterms' 
     GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date' 
+0

답변을 다시 읽은 후 3 번 제대로 답변했는지 확실하지 않습니다. 더 설명해 주시겠습니까? – TheMansn

+0

고객 테이블에서 열을 선택하십시오. 별표 tbl1을 예약 테이블 a와 결합하는 것보다 선택하십시오. somecolumn에 searchterms가 있고 그룹이 필요로하는 조건으로 tbl2로 별칭을 지정하십시오. 하나의 조건, 즉 두 테이블 모두에 존재하는 하나의 조건 인 열입니다. – Mihai

+0

오 그게 당신이 의미하는 것입니다. 나는 이미 알았지 만 당신의 설명에 감사드립니다 :) 문제는 2 개의 테이블을 비교하기 위해서 2 개의 다른 coloumns (firstname과 lastname)로부터 데이터를 가져와야한다는 것입니다. – TheMansn