[英]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)。
您需要加入表格:
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.