2009-08-27 9 views
1
$query = "SELECT A.Agent_Name, C.Country_Name, J.Job_Type FROM Line_Items LI, Agents A, 
      Country C, Job J WHERE LI.Agent_ID = 1 AND LI.Agent_ID = A.Agent_ID AND 
      LI.Country_ID = C.Country_ID AND LI.Job_ID = J.Job_ID"; 
$result = mysql_query($query); 
while($row = mysql_fetch_query($result)) { 
    echo "Agent:" . $row['Agent_Name']."<br>"; 
    echo "Country:" . $row['Country_Name']."<br>"; 
    echo "Job:" . $row['Job_Type']."<br>"; 
} 

이 쿼리는 AGENTS 테이블의 첫 번째 에이전트와 Country 테이블 및 작업 테이블 만 출력합니다.이 테이블의 항목을 기반으로 해당 테이블에서 해당 에이전트 이름, 국가 이름 및 작업 유형을 출력하려고합니다. 품목 테이블쿼리는 테이블의 첫 번째 항목 만 표시합니다 - 잘못되었습니다!

도와주세요!

+1

PHP 외부에서이 쿼리를 실행하면 여러 행이 반환됩니까? –

답변

1

시도 대신 mysql_fetch_array를 사용하여 :

while($row = mysql_fetch_array($result)) { 
    echo "Agent:" . $row['Agent_Name']."<br>"; 
    echo "Country:" . $row['Country_Name']."<br>"; 
    echo "Job:" . $row['Job_Type']."<br>"; 
} 
+0

작동하지 않았습니다. 죄송합니다! – Felix

0

나는 문제가 그것을 당신이 간단한/하나의 SELECT 문에 액세스 권한이없는 사용자의 SQL에서 값을 끌어하려고하는 사실을 거짓말을 믿습니다. 두 개 이상의 테이블 사이의 공통 열 데이터를 기반으로 하나 이상의 테이블에서 데이터를 가져 오는 동안 시도하려는 작업에 대해 JOIN 문을 사용해야합니다. SQL에서 빠른 시도 :

SELECT A.Agent_Name, C.Country_Name, J.Job_Type FROM Line_Items LI INNER JOIN 
(Agents A CROSS JOIN Country C CROSS JOIN Job J) ON 
(LI.Agent_ID = 1 AND 
LI.Agent_ID = A.Agent_ID AND 
LI.Country_ID = C.Country_ID AND 
LI.Job_ID = J.Job_ID); 

EDIT : FROM이 누락되어 죄송합니다. 필요합니다. 완벽한 SQL 구문을 얻으려는 것이 아닙니다. 필요한 열과 일치시킬 항목을 알고 있습니다. 단지 대략적인 스케치 일뿐입니다. 다음은 공식 MySQL 가입 문서에 link입니다.

+0

@ 로버트, OP는 다른 결합 구문을 사용하고 있습니다. 약간 구식 인 IMHO이지만 유효 할 때까지 사용합니다. – Rob

+0

FROM없이 SELECT? 이게 효과가 있겠지 ...? – Felix

+0

@Felix, 좋은 지적입니다. :) – Rob

관련 문제