尝试从SQL Query检索数据时遇到困难。
我在HTML网站上使用PHP运行查询。
前一页的按钮带有:
href="edit_Job.php?edit=<?php echo $result->JobID;?>">Edit Job
这是在我的工作表中使用JobID将数据拉到下一页Edit_job.php
下一页的顶部我有一些PHP代码:
if(isset($_GET['edit']))
{
$editid=$_GET['edit'];
}
从Jobs表中获取数据的同时,我还有其他表需要提取数据。
就像概述一样,我有3个表,在这些表中,我需要从每个表中提取数据的数据具有外键,如下所述。
乔布斯 ======= 作业ID JOBTITLE 客户 站点名称 站点 ======= SideID 客户 网站的 客户端 ======= 客户端ID SITEID CLIENTNAME
使用PHP如何从这些表中检索数据?我一直在搜索互联网,尝试过内部联接,联接,从何处选择等。
我可以使用以下方法在PHPMYADMIN上获得结果
SELECT Jobs.Sitename, Sites.Site FROM Jobs INNER JOIN Sites ON Jobs.Sitename = Sites.site
但这不是来自EDIT的特定信息
任何帮助,将不胜感激
看来您将需要许多表才能获取所需的信息。这将需要对数据库进行一些重新设计。
在多对多表中,该表仅包含您需要配对在一起的两列ID。制作这样的表:
Jobs_Sites ======= 作业ID SITEID Clients_Jobs ======= 客户端ID 作业ID
这是完成此任务的数据库的完整示例。
CREATE TABLE IF NOT EXISTS `Jobs` (
`JobID` int(6) unsigned NOT NULL,
`JobTitle` varchar(200) NOT NULL,
PRIMARY KEY (`JobID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Sites` (
`SiteID` int(6) unsigned NOT NULL,
`SiteName` varchar(200) NOT NULL,
`ClientID` int(6) unsigned NOT NULL,
PRIMARY KEY (`SiteID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Clients` (
`ClientID` int(6) unsigned NOT NULL,
`ClientName` varchar(200) NOT NULL,
PRIMARY KEY (`ClientID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Jobs_Sites` (
`JobID` int(6) unsigned NOT NULL,
`SiteID` int(6) unsigned NOT NULL,
PRIMARY KEY (`JobID`, `SiteID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Clients_Jobs` (
`ClientID` int(6) unsigned NOT NULL,
`JobID` int(6) unsigned NOT NULL,
PRIMARY KEY (`ClientID`, `JobID`)
) DEFAULT CHARSET=utf8;
INSERT INTO `Jobs` (`JobID`, `JobTitle`) VALUES
(1, 'Big job'),
(2, 'Small job'),
(3, 'Cheap job'),
(4, 'Difficult job');
INSERT INTO `Sites` (`SiteID`, `SiteName`, `ClientID`) VALUES
(1, 'Park', 1),
(2, 'City', 2),
(3, 'Road', 1);
INSERT INTO `Clients` (`ClientID`, `ClientName`) VALUES
(1, 'Bob'),
(2, 'Hannah'),
(3, 'Jimmy');
INSERT INTO `Jobs_Sites` (`JobID`, `SiteID`) VALUES
(1, 1),
(1, 2),
(1, 3),
(2, 1),
(3, 2),
(3, 3),
(4, 3);
INSERT INTO `Clients_Jobs` (`ClientID`, `JobID`) VALUES
(1, 1),
(1, 2),
(2, 3),
(3, 4),
(3, 1);
然后,您可以执行以下查询:
获取工作信息
SELECT j.JobId,
j.JobTitle,
s.SiteID,
s.SiteName,
c.ClientId,
c.ClientName
FROM Jobs j
JOIN Jobs_Sites js ON j.JobID = js.JobID
JOIN Sites s ON s.SiteID = js.SiteID
JOIN Clients_Jobs cj ON cj.JobID = j.JobID
JOIN Clients c ON c.ClientID = cj.ClientID
WHERE j.JobID = 1
结果
JobId JobTitle SiteID SiteName SiteId ClientId ClientName 1大工作1公园1 Bob 1大工作2城市1 Bob 1大工作3 Road 1 Bob 1大工作1 Park 3 Jimmy 1大工作2 City 3 Jimmy 1大工作3 Road 3 Jimmy
获取客户信息
SELECT j.JobId,
j.JobTitle,
s.SiteID,
s.SiteName,
c.ClientId,
c.ClientName
FROM Jobs j
JOIN Jobs_Sites js ON j.JobID = js.JobID
JOIN Sites s ON s.SiteID = js.SiteID
JOIN Clients_Jobs cj ON cj.JobID = j.JobID
JOIN Clients c ON c.ClientID = cj.ClientID
WHERE c.ClientID = 2
结果
JobId JobTitle SiteID SiteName ClientId ClientName 3廉价工作2城市2 Hannah 3廉价工作3 Road 2 Hannah
如果这不是您想要的,这应该使您指向正确的方向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句