2014-05-17 5 views
0
에서 쿼리

나는 다음과 같은 테이블이 있습니다는 PHP 및 MySQL의 :이 개 테이블

JOBS :

+--------+------------+------------------+ 
| job_id | company_id | job_title  | 
+--------+------------+------------------+ 
| 123456 | 342186  | MySQL Dev needed | 
| 549201 | 175123  | PHP Dev needed | 
| 784930 | 823491  | UI Designer pls | 
+--------+------------+------------------+ 

회사 :

+------------+--------------+---------------------+ 
| company_id | company_name | company_email  | 
+------------+--------------+---------------------+ 
| 342186  | Microsoft | [email protected] | 
| 823491  | Quora  | [email protected]  | 
| 784930  | Facebook  | [email protected] | 
+------------+--------------+---------------------+ 

이이 모든 작업을 얻기를위한 내 현재 쿼리입니다 주부 테이블 :

// get all jobs from jobs table 
$result = mysql_query("SELECT * FROM jobs") or die(mysql_error()); 

// check for empty result 
if (mysql_num_rows($result) > 0) { 
    // looping through all results 
    // jobs node 
    $response["jobs"] = array(); 

    while ($row = mysql_fetch_array($result)) { 
     // temp user array 
     $job = array(); 
     $job["job_id"] = $row["job_id"]; 
     $job["company_id"] = $row["company_id"]; 
     $job["company_name"] = $row["company_name"]; //<<<-------THIS 
     $job["job_title"] = $row["job_title"]; 

     // push single product into final response array 
     array_push($response["jobs"], $product); 
    } 
else { //Error } 

With 위 코드는 모든 작업을 얻습니다. 이제 "company_name"이 각각의 작업에 속할 수 있도록 쿼리/코드를 어떻게 수정할 수 있습니까? 예 : 에 의해 게시 한 "MySQL의 데브 필요"작업 이후

COMPANY_ID는 = 342,186는이 속한 마이크로 소프트 나는 루프 동안 실제 내부의 또 다른 while 루프를 만드는 생각했다

정확한 회사 정보를 얻을 수 있도록 최선의 방법이라고 생각합니다.

+0

사용하면 기업의 테이블 COMPANY_ID 및 외래 키 참조를 위해 주요 설정 외부 및 기본 키 참조를 설정 조인 경우 답을 얻을 수 있습니다 조인 JOBS 테이블 COMPANY_ID입니다. – Ramki

답변

3
SELECT * FROM jobs 
LEFT JOIN companies ON jobs.company_id = companies.company_id 

이 함께 두 개의 쿼리를 '참여'와 하나의 행에 당신에게 정보를 줄 것이다, 당신도 할 수있는, 대신의

+0

모든 사람의 질문에 옳은 것으로 표시하고 싶습니다. 네가 가장 단순하고, 그냥 테스트 해 보았고 완벽하게 고마워! – user3288852

+0

당신이 말했듯이, 모든 사람들이이 질문에 맞았습니다 :) 다행 당신을 위해 일했다! –

3

당신은 단순히 이렇게 쿼리에 조인을 사용 :

select 
    co.company_name, 
    jo.company_id, 
    jo.job_id, 
    jo.job_title 
from 
    jobs jo 
     join companies co 
      on jo.company_id=co.companyid 

는 또한, 내가 당신과 같은 질문에 도움이 잠시 다시 question and answer을 썼다 - 당신은 쿼리의 더 나은 이해를 얻을 수 있도록.

1

조인 두 테이블의 공통 식별자 (COMPANY_ID)에 의해 '합류'

SELECT 
    c.company_name, 
    j.company_id, 
    j.job_id, 
    j.job_title 
FROM 
    jobs j, 
    companies c 
WHERE 
    c.id = j.company_id 

두 추가 참고 사항 : 당신은 아마 쿼리 만 필요한 열을 선택해야 성능상의 이유로

이 같은 쿼리를 사용합니다. 그리고 은 mysql_ -functions 대신 PDO 나 MySQLi를 사용하는 것이 좋습니다. 은 PHP 5.5 이후로 더 이상 사용되지 않으므로입니다.

php.net :

원래 MySQL의 확장

지금은 사용되지 않으며 데이터베이스에 연결할 때 E_DEPRECATED 오류가 발생합니다. 대신 MySQLi 또는 PDO_MySQL 확장을 사용하십시오. 당신이 의심이 나는 약이 삭제됩니다 물어 의미하는 경우