将MySQL中的数据列与不同的值关联
我认为这是一个简单的问题,但我不能完全理解答案。在一个数据库表中,我有一系列位置ID,它们与另一个表中的位置ID关联。我想在这些ID之间创建一个明确且不变的链接,但是ID本身有不同的值 我如何确保(例如)BA789或BA8001中的员工始终与位置代码CN345关联(他们是相同的物理位置)将MySQL中的数据列与不同的值关联,mysql,Mysql,我认为这是一个简单的问题,但我不能完全理解答案。在一个数据库表中,我有一系列位置ID,它们与另一个表中的位置ID关联。我想在这些ID之间创建一个明确且不变的链接,但是ID本身有不同的值 我如何确保(例如)BA789或BA8001中的员工始终与位置代码CN345关联(他们是相同的物理位置) 谢谢,Tom,如果没有看到实际的表模式和示例数据,很难判断,但是如果您的表看起来像 CREATE TABLE locations ( location_id VARCHAR(6) PRIMARY KEY )
谢谢,Tom,如果没有看到实际的表模式和示例数据,很难判断,但是如果您的表看起来像
CREATE TABLE locations
(
location_id VARCHAR(6) PRIMARY KEY
);
CREATE TABLE employees
(
employee_id INT PRIMARY KEY,
location_id VARCHAR(6),
FOREIGN KEY (location_id) REFERENCES locations(location_id)
);
SELECT employee_id, location_id,
COALESCE(m.location_id2, location_id) mapped_location_id
FROM employees e LEFT JOIN location_map m
ON e.location_id = m.location_id1;
然后可以在位置代码(ID)之间引入多对多映射表
包括以下内容
| LOCATION_ID1 | LOCATION_ID2 |
|--------------|--------------|
| BA789 | CN345 |
| BA8001 | CN345 |
样本输出:
| EMPLOYEE_ID | LOCATION_ID | MAPPED_LOCATION_ID |
|-------------|-------------|--------------------|
| 1 | BA789 | CN345 |
| 2 | BA8001 | CN345 |
| 3 | BA9999 | BA9999 |
|员工|位置| ID |映射|位置| ID|
|-------------|-------------|--------------------|
|1 | BA789 | CN345|
|2 | BA8001 | CN345|
|3 | BA9999 | BA9999|
这些表之间有什么联系?请记住,SQL表本质上是无序的,因此表中没有自然排序。@tomish了解连接@Sam D联接不要求每个表中有一列具有相同的数据吗?我可以使CN345 ID(以及其他类似的ID)在两个表中都可用,因此我猜应该是SELECT table2.BAID,其中table1.CNID=table2.CNIDHi Tom,欢迎使用so。你应该就你的问题提供更多的信息。就像您的表结构和每个表的一些数据示例一样。然后你说你需要什么作为结果。当然,试着表现出一些努力。我们不是来为你做这件事的。试试看,如果不行,你就试试看,我们会帮你的。太棒了!非常感谢-今晚晚些时候我将尝试此实现!Tom@tomish太好了:)让我知道进展如何。 | EMPLOYEE_ID | LOCATION_ID | MAPPED_LOCATION_ID | |-------------|-------------|--------------------| | 1 | BA789 | CN345 | | 2 | BA8001 | CN345 | | 3 | BA9999 | BA9999 |