2009-08-27 63 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表中的第一個代理,以及國家表和作業表...我想根據這些表中的條目輸出相應的代理名稱,國家名稱和作業類型行項目表。查詢僅在表中顯示第一個條目 - 錯誤!

請幫忙!

+1

當您在PHP之外運行此查詢時,是否會返回多行? – 2009-08-27 17:17:27

回答

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 2009-08-27 17:27:45

0

我認爲問題在於它要嘗試拉在你的SQL,你必須在一個單/簡單的SELECT語句不訪問值的事實。您應該使用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); 

編輯:抱歉關於錯過了 - 它確實需要它。我並不想爲你獲得一個完美的SQL語句 - 你知道你需要什麼列和匹配什麼:它只是一個粗略的草圖。這是官方MySQL加入文檔的link

+0

@羅伯特,OP是使用不同的加入語法,稍微陳舊的語法恕我直言,但直到有效。 – Rob 2009-08-27 17:24:26

+0

選擇無FROM?這會工作......? – Felix 2009-08-27 23:14:42

+0

@Felix,好點 - 它不會! :) – Rob 2009-08-28 06:19:14

相關問題