2012-08-28 3 views
0

기본적으로 IM은이 SQL 문에 사용할 올바른 구문을 찾는 데 어려움을 겪고있는 프로젝트에서 작업을 마무리하려고합니다.두 테이블을 서로 다른 기준으로 결합하기

는 기본적으로 난 두 개의 서로 다른 테이블에 무엇을 : 난 그냥 회사 ID에 가입하는 것처럼

Customer: 
companyid 
companyname 
etc etc. 

Machine: 
machineid 
model 
serial 
companyid 

지금 일반적으로이 쉬울를, 그러나, 나는 약간 다르게 이번에는이 작업을 수행해야합니다. 고객의 ID를 사용하여 고객의 테이블에서 특정 데이터를 검색하고 검색 할 기계 ID를 사용하여 기계의 테이블에서 특정 데이터를 리턴해야합니다.

나는 대답을하면 얼굴에 똑바로 쳐다보고 있지만, 내가 무엇을하고 있었는지 heres 사과 할거야, 꽤 피곤해. 다시 그럴 가능성이 잘못된 것보다 더 많이 알고있다. 그래서 나는 미안하지만 나는 쓸모가 없다. : 어떤 도움을 크게 감상 할 수

$customerquery = mysql_query(" 
      SELECT customer.companyid, customer.companyname, 
        customer.companyaddress, customer.postcode, 
        customer.telephone, customer.mobile, 
        machine.machineid, machine.model, 
        machine.serial 
      FROM customer, machine 
      WHERE customer.companyid=$customerid AND 
        machine.machineid=$machineid 
      "); 

, 감사합니다!

+1

당신은 가입 절을'이 누락 WHERE customer.companyid = machine.companyid' ... –

답변

1

테이블을 조인해야하는 조건이 없으므로 현재 쿼리는 카티 션 곱을 생성합니다. 이것은 이전 구문의 (SQL-89)

SELECT customer.companyid, customer.companyname, 
     customer.companyaddress, customer.postcode, 
     customer.telephone, customer.mobile, 
     machine.machineid, machine.model, 
     machine.serial 
FROM customer, machine 
WHERE customer.companyid = $customerid AND 
     machine.machineid = $machineid AND 
     customer.companyid = machine.companyid -- you missed this one producing 
               -- cartesian product 

새로운 구문을 조인 (SQL-92)

SELECT customer.companyid, customer.companyname, 
     customer.companyaddress, customer.postcode, 
     customer.telephone, customer.mobile, 
     machine.machineid, machine.model, 
     machine.serial 
FROM customer INNER JOIN machine 
      ON customer.companyid = machine.companyid 
WHERE customer.companyid = $customerid AND 
     machine.machineid = $machineid 
+0

존, 당신은 생명의 은인입니다. 그런 어리석은 질문을하는 것은 유감 스럽다. 잠을 자면 인생이 훨씬 어려워진다. 다시 고마워, 너는 나에게 두통을 많이 남겼다! – user1629095

+1

은 테이블을 조인 할 때'ANSI SQL-92' 구문을 사용하도록 훈련했습니다. 'INNER JOIN'의 예전 구문은 오류가 발생하기 쉽습니다. 조건을 놓친 경우 오류 메시지가 생성되지는 않지만 결과의 직교 좌표 곱을 사용하기 때문입니다. 새 버전에서는 'ON' 절에 조건을 지정해야합니다. :) 천만에요. –

+0

존에 대한 또 다른 빠른 질문, 당신의 의견. 일단 내가 선택한 데이터를 가져 오면, 사용자를 통해 입력 된 다른 데이터와 함께 다른 데이터베이스 테이블에 게시하는 데 사용할 것입니다. 가장 좋은 방법은 내가 데이터를 결과를 통해 반환 걸릴 생각했다, 사용자가 입력 한 데이터에 사용되는 양식에 숨겨진 된 입력 상자에 배치 할 또는이 일을 더 깨끗한 방법은 무엇입니까? – user1629095

관련 문제