从多个表中提取SQL数据

汤姆·伯奇

尝试从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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server从多个表中提取数据

来自分类Dev

BeautifulSoup从多个表中提取数据

来自分类Dev

从多个Excel工作表中提取数据

来自分类Dev

从Google Colab研究的多个工作表中提取数据

来自分类Dev

从多个Excel工作表中提取数据并计算特定项目

来自分类Dev

使用xpath使用Scrapy从多个表中提取数据

来自分类Dev

SQL查询可根据三分之一的值从多个表中提取某些数据

来自分类Dev

sql server触发从联接表中提取数据

来自分类Dev

C#-从SQL表中提取唯一数据

来自分类Dev

从sql表中提取行数

来自分类Dev

SQL从列中提取数据

来自分类Dev

如何跨多个工作表编写一个countifs函数,以从过滤的数据中提取数据?

来自分类Dev

单个数据库调用从EF Core中的多个表中提取数据

来自分类Dev

如何从数据表中提取数据

来自分类Dev

从表中提取具有多个要求的对

来自分类Dev

从多个表中提取Sequelize Info

来自分类Dev

如何从python中的许多word文档的多个表中提取所有数据(直接从MS Word提取数据)?

来自分类Dev

从多个XML行中提取数据

来自分类Dev

从单个按钮的多个片段中提取数据

来自分类Dev

sas宏从多个文件中提取数据

来自分类Dev

从JSON数据中提取多个数组

来自分类Dev

VBA错误91-从多个工作簿/工作表中提取数据

来自分类Dev

从BS4中的表行中提取多个数据

来自分类Dev

Oracle:无法从联接表中提取数据:单行子查询返回多个行

来自分类Dev

在gsheets中,如何从查询中的工作簿中的多个表中提取数据?

来自分类Dev

Fisher测试多个数据条目并在单独的表中提取结果

来自分类Dev

使用javascript从tablesorter表中提取数据

来自分类Dev

从数据表中提取特定列

来自分类Dev

从sqlite3表中提取数据

Related 相关文章

  1. 1

    SQL Server从多个表中提取数据

  2. 2

    BeautifulSoup从多个表中提取数据

  3. 3

    从多个Excel工作表中提取数据

  4. 4

    从Google Colab研究的多个工作表中提取数据

  5. 5

    从多个Excel工作表中提取数据并计算特定项目

  6. 6

    使用xpath使用Scrapy从多个表中提取数据

  7. 7

    SQL查询可根据三分之一的值从多个表中提取某些数据

  8. 8

    sql server触发从联接表中提取数据

  9. 9

    C#-从SQL表中提取唯一数据

  10. 10

    从sql表中提取行数

  11. 11

    SQL从列中提取数据

  12. 12

    如何跨多个工作表编写一个countifs函数,以从过滤的数据中提取数据?

  13. 13

    单个数据库调用从EF Core中的多个表中提取数据

  14. 14

    如何从数据表中提取数据

  15. 15

    从表中提取具有多个要求的对

  16. 16

    从多个表中提取Sequelize Info

  17. 17

    如何从python中的许多word文档的多个表中提取所有数据(直接从MS Word提取数据)?

  18. 18

    从多个XML行中提取数据

  19. 19

    从单个按钮的多个片段中提取数据

  20. 20

    sas宏从多个文件中提取数据

  21. 21

    从JSON数据中提取多个数组

  22. 22

    VBA错误91-从多个工作簿/工作表中提取数据

  23. 23

    从BS4中的表行中提取多个数据

  24. 24

    Oracle:无法从联接表中提取数据:单行子查询返回多个行

  25. 25

    在gsheets中,如何从查询中的工作簿中的多个表中提取数据?

  26. 26

    Fisher测试多个数据条目并在单独的表中提取结果

  27. 27

    使用javascript从tablesorter表中提取数据

  28. 28

    从数据表中提取特定列

  29. 29

    从sqlite3表中提取数据

热门标签

归档