gpt4 book ai didi

php - SQL PHP 连接 4 个表

转载 作者:行者123 更新时间:2023-12-01 00:22:23 24 4
gpt4 key购买 nike

我看了看,就是想不通。

以下是我要实现的目标:

JobID AssignedTo SchDate ContractNo VisitNo Equipment SiteName SiteContact SiteAddress SiteTel AddedBy
1 Mark 220314 1 12 3500 Tesco Joe 21 spooner 123455 Admin

当我使用以下查询时,当我应该只有一个结果时,它如何创建 2 个结果:

SELECT j.JobID, j.CompletedBy, u.NameUser, j.SchDate, j.CustID, j.ContractNo, j.VisitNo,
s.EqName, si.SiteName, si.SiteContact, si.SiteAddress, si.SiteTele
FROM jobs j, systypes s, users u, site si
WHERE j.CompletedBy ='0' AND j.AssignedTo='$mytechname' AND j.SysTypeID=s.SysTypeID
AND j.SiteID=si.SiteID

以下是正在使用的表格:

工作

JobID completedBy AssignedTo SchDate CustID ContractNo VisitNo SysTypeID SiteID AddedBy
1 0 1 220314 1 1 12 1 1 2

网站

SiteID CustID SiteContact SiteName SiteAddress SiteTel
1 1 Ann Jones Tesco 21 spooner 123455
2 2 John Hulson tele 54 vic st 443212

系统类型

SysTypeID EqCode EqName
1 350 3500
2 450 4500

用户

UserID NameUser UserName UserPass
1 Mark mmc 1234
2 Admin Admin 1234

我认为我走在正确的轨道上,我只需要一些指导。

如果您有任何问题,请提出,在此先感谢。

结果

Count: 2 JobID: 1 CompletedBy: 0 AssignedTo: Mark McGuinness SchDate: 22/03/2014 CustID: 1 ContractNo: 12 VisitNo: 4 Equipment Name: 3500 SiteName: Tesco SiteContact: Ann Jones SiteAddress: 21 Good Street Glasgow G14 4CA SiteTele: 1413216545
Count: 2 JobID: 1 CompletedBy: 0 AssignedTo: Admin SchDate: 22/03/2014 CustID: 1 ContractNo: 12 VisitNo: 4 Equipment Name: 3500 SiteName: Tesco SiteContact: Ann Jones SiteAddress: 21 Good Street Glasgow G14 4CA SiteTele: 1413216545

最佳答案

这是应该让你开始的基本查询

SELECT j.JobID, j.CompletedBy, u.NameUser, j.SchDate, j.CustID, 
j.ContractNo, j.VisitNo,s.EqName, si.SiteName, si.SiteContact,
si.SiteAddress, si.SiteTele
FROM jobs as j
INNER JOIN users as u
ON j.AssignedTo = u.NameUser
INNER JOIN sites as si
ON j.CustId = si.CustId
INNER JOIN systypes as s
ON j.SysTypeID = s.SysTypeID
WHERE j.CompletedBy ='0'
AND j.AssignedTo='$mytechname'

关于该解决方案的一些提示:

INNER JOIN :仅当当前行在连接表中有匹配行时,此命令才会在您的行集中添加一行。如果你想在没有匹配行的情况下包含数据,请使用 LEFT JOINRIGHT JOIN

在性能方面,您应该使用 UserId 来连接 usersjobs 表。通过默认查找匹配 MySQL 获取有限数量的位数据来查找匹配键,使用字符串,您可以在每次搜索迭代中容纳更少的元素。当不使用主键进行连接时,请确保在连接列上创建索引

最后,安全方面,你应该依赖 parametrized queries而不是在查询字符串中使用变量

关于php - SQL PHP 连接 4 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com