php - 如何将多个值分配给php/mysql中另一个表的值

标签 php html mysql

this is my requirement_tbl

and my documents_tbl

和我的预期结果

-------------------------------------------------------------
| doc_id | document_name | requirement_id |requirement_name | 
-------------------------------------------------------------
|   1    |Certifications |       3        | requirementname |
|        |               |       1        | requirementname |
|        |               |       7        | requirementname |
|        |               |       9        | requirementname |
|    2   |CAV            |       1        | requirementname |
|        |               |       4        | requirementname |
|        |               |       3        | requirementname |
|        |               |       5        | requirementname |
-------------------------------------------------------------

此输出是否可以使用 PHP 在 HTML 中显示?有人可以告诉我怎么做吗? 这与外键和连接表有关吗? 提前致谢。

最佳答案

构建一个 sqlfiddle 会很有帮助对于诸如此类的问题,以便审阅者可以遵循通用的模式/数据集。给定以下架构:

CREATE TABLE `document` (
  `document_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  `document_name` VARCHAR(64) DEFAULT NULL,
  `document_amount` INT(4),
  `requirement1` INT(11) DEFAULT 0,
  `requirement2` INT(11) DEFAULT 0,
  `requirement3` INT(11) DEFAULT 0,
  `requirement4` INT(11) DEFAULT 0,
  `requirement5` INT(11) DEFAULT 0,
  `requirement6` INT(11) DEFAULT 0,
  `requirement7` INT(11) DEFAULT 0
);

CREATE TABLE `requirement` (
  `requirement_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  `document_id` INT(11) DEFAULT 0,
  `requirement_name` VARCHAR(64) DEFAULT NULL
);

主要障碍是每个文件的要求是非规范化的;可能有多达 7 个不同的需求选项分布在每个文档栏中。为此,您需要将它们组合在一起,使它们代表一个列,这可以通过 union 完成:

SELECT `document_id`, `requirement1` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement2` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement3` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement4` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement5` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement6` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement7` as 'requirement' FROM `document`

然后您就可以将您的查询连接到所需的结果集中:

SELECT d.document_id, d.document_name, r.requirement_id, r.requirement_name FROM
`document` as `d` JOIN
(
# correct for non-normalization via UNION on requirements
SELECT `document_id`, `requirement1` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement2` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement3` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement4` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement5` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement6` as 'requirement' FROM `document`
UNION
SELECT `document_id`, `requirement7` as 'requirement' FROM `document`
) `req`
ON d.document_id = req.document_id
JOIN `requirement` as `r`
ON req.requirement = r.requirement_id
WHERE req.requirement > 0
ORDER BY d.document_id, r.requirement_id;

关于php - 如何将多个值分配给php/mysql中另一个表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39211762/

相关文章:

PHP - PDO mysql 备份到远程主机?

javascript - 从目录和 session 变量问题中检索图像 - php

php - 如何在拼字游戏应用程序中搜索 'blank tile'? (PHP)

php - 我的 sql 语句或我的 php 代码有什么问题?

html - Bootstrap 4 : Navbar with logo and 2 rows

mysql - 在 AUTO_INCREMENT 列上设置 INDEX 有用吗?

php - 数据缓存会造成干扰吗?

php - 如何在 PHPTAL 宏中打印未关闭的标签

mysql - 在mysql中创建大表之前的检查 list

html - 尝试使用移动优先方法应用粘性页脚