尝试从SQL查询中检索数据时遇到困难。
我正在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表中获取数据时,我还有其他表需要提取数据。
作为概述,我有三个表,其中我需要从每个表中提取数据的数据具有外键,如下所述。
Jobs ======= JobID JobTitle Client SiteName Sites ======= SideID Client Site Clients ======= ClientID SiteID ClientName
如何使用PHP从这些表中检索数据?我一直在搜索互联网,尝试过内部联接,联接,从何处选择等等。
我可以使用
在PHPMYADMIN上获得结果SELECT Jobs.Sitename, Sites.Site FROM Jobs INNER JOIN Sites ON Jobs.Sitename = Sites.site
但这不是来自EDIT的特定信息
任何帮助将不胜感激
答案 0 :(得分:0)
您似乎需要一些many to many表来获取所需的信息。这将需要对数据库进行一些重新设计。
在多对多表中,该表仅包含您需要配对在一起的两列ID。制作这样的表:
Jobs_Sites ======= JobID SiteID Clients_Jobs ======= ClientID JobID
这是可以完成此任务的数据库的完整示例。
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 ClientId ClientName 1 Big job 1 Park 1 Bob 1 Big job 2 City 1 Bob 1 Big job 3 Road 1 Bob 1 Big job 1 Park 3 Jimmy 1 Big job 2 City 3 Jimmy 1 Big job 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 Cheap job 2 City 2 Hannah 3 Cheap job 3 Road 2 Hannah
如果这不完全是您想要的,那么应该使您指向正确的方向。