我正在尝试创建一个带有名称/号码的存储过程,并返回该名称/号码的特定值
所以在这段代码中,我正在尝试编写一个存储过程,它会获取公司名称或cvr编号并返回该公司的合规程度
DROP DATABASE IF EXISTS DRCS;
CREATE DATABASE DRCS;
USE DRCS;
CREATE TABLE Companies (
ID INT not null,
Name varchar(255),
primary key (ID)
);
CREATE TABLE CVR (
ID INT not null,
CVR_Number INT
);
CREATE TABLE Compliance (
ID INT not null,
Complaince_level varchar(255)
);
CREATE TABLE GDPR (
ID INT not null,
GDPR_steps varchar(255)
);
INSERT INTO Companies VALUES
(1, 'TDC'),
(2, 'MAERSK'),
(3, 'LEGO'),
(4, 'SAS'),
(5, 'Carlsberg');
INSERT INTO CVR VALUES
(11, '14773908'),
(12, '32345794'),
(13, '47458714'),
(14, '56994912'),
(15, '61056416');
INSERT INTO Compliance VALUES
(21, '10%'),
(22, '20%'),
(23, '40%'),
(24, '60%'),
(25, '80%');
INSERT INTO GDPR VALUES
(31, '1. Awareness'),
(32, '2. Information you hold'),
(33, '3. Communication privacy information'),
(34, '4. Individuals rights'),
(35, '5. Subject access requests');
#HERE MY PROBLEM STARTS
DELIMITER $$
CREATE PROCEDURE DoC()
BEGIN
SELECT * FROM Companies , CVR, Compliance, GDPR;
END $$
DELIMITER ;
CALL DoC;
答案 0 :(得分:0)
四张桌子之间没有任何关系! 为所有表创建具有公共ID(如id = 1,2,3,4)的行,然后执行连接,然后尝试列出要查看的字段。
插入公司价值观 (1,' TDC'), (2,' MAERSK'), (3,' LEGO'), (4,' SAS'), (5,'嘉士伯');
INSERT INTO CVR VALUES
(1, '14773908'),
(2, '32345794'),
(3, '47458714'),
(4, '56994912'),
(5, '61056416');
INSERT INTO Compliance VALUES
(1, '10%'),
(2, '20%'),
(3, '40%'),
(4, '60%'),
(5, '80%');
INSERT INTO GDPR VALUES
(1, '1. Awareness'),
(2, '2. Information you hold'),
(3, '3. Communication privacy information'),
(4, '4. Individuals rights'),
(5, '5. Subject access requests');
从公司c,cvr v中选择c.id,v.cvr_Number,其中c.id = v.id
同样通过加入id添加更多表。您不需要这样的程序,并且程序不是为此而设计的。
答案 1 :(得分:0)
您可以使用所有表的联合查询。但所有选择的clomum计数查询应该是相同的。
DELIMITER $$
CREATE PROCEDURE DoC()
SELECT A.id,A.name FROM
( SELECT id as id , name as name FROM Companies
UNION ALL
SELECT id as id , name as name FROM CVR
UNION ALL
SELECT id as id , name as name FROM Compliance
UNION ALL
SELECT id as id , name as name FROM GDPR) as A
END $$
DELIMITER ;