繁体   English   中英

如何从多个mySQL表中选择并输出到PHP?

[英]How do I select from multiple mySQL tables and output to PHP?

我的PHP应用程序在MySQL中至少有4个表(在此示例中已将其简化)

代理-代理ID-代理名称

国家-国家/地区ID-国家/地区名称

职位-职位ID-职位类型

Line_Items-Line_ID-Agent_ID-Country_ID-Job_ID

现在,我需要从Line_Items中进行选择,其中Agent_ID = 1,而不是回显它们的整数形式的Agent_ID,Country_ID和Job_ID,而是要输出其名称(Agent_Name,Country_Name,Job_Type)。

  1. 如何编写查询?
  2. 如何使用常用的$ result = mysql_query(“ select ....”)在PHP中输出此内容? while($ row = mysql_fetch_query($ result)){echo .....};

您需要加入表格:

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

另外,考虑使用view ,如下所示:

CREATE VIEW Line_Items_Detail
AS
  SELECT LI.Agent_ID, 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

然后,使用该视图,您的查询非常简单:

SELECT Agent_Name, Country_Name, Job_Type
FROM Line_Items_Detail
WHERE Agent_ID = 1

通过这些查询中的任何一个,您都可以使用编写的PHP代码来输出结果。

希望能帮助到你。


编辑

使用第一个查询,您的PHP将如下所示(简化):

$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>";
}

当然,如果需要其他ID,则需要更改LI.Agent_ID 您可以为其使用占位符,并替换为正确的ID,或者将正确的ID连接到查询中。

只要在这里使用JG,就可以使用联接。 但是,这是用于联接表的另一种(并且更被接受的??)语法。

SELECT A.Agent_Name, C.Country_Name, J.Job_Type
FROM Line_Items LI
INNER JOIN  Agents A
ON LI.Agent_ID = A.Agent_ID
INNER JOIN Country C
LI.Country_ID = C.Country_ID
INNER JOIN Job J
ON LI.Job_ID = J.Job_ID
WHERE LI.Agent_ID = 1

如果国家,代理商或工作行可能不存在,则可以使用LEFT JOIN代替内部联接。 如我所使用的,使用INNER JOIN会导致没有行返回,例如,如果没有国家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM