单值数据到数据库关系中的多个数据值

时间:2012-09-12 15:33:30

标签: mysql sql database database-design relational-database

我很难想象这一点。我只是没有大脑去做。

我有一张名为reports的表。

---------------------------------------------
| report_id   | set_of_bads | field1 | field2 |
---------------------------------------------
| 123         | set1        | qwe    | qwe    |
---------------------------------------------
| 321         | 123112      | ewq    | ewq    |
---------------------------------------------

我有另一个名为bads的表。该表包含错误数据列表。

-------------------------------------
| bad_id    | set_it_belongs_to | field2 | field3  |
-------------------------------------
| 1         | set1              | qwe    | qwe     |
-------------------------------------
| 2         | set1              | qee    | tte     |
-------------------------------------
| 3         | set1              | q44w   | 3qwe    |
-------------------------------------
| 4         | 234               | qoow   | 3qwe    |
-------------------------------------

我想设置外键关键的主键。我的问题是,如何在set_of_bads表格中将字段set_it_belongs_tobads相关联。这样,如果我想通过调用set1表来获取reports的整个数据集,我可以这样做。

示例:嘿报告表..显示包含report_id 123的行。好的,谢谢。现在,在bads字段中获取set_of_bads的{​​{1}}行中report_id 123行的所有行。感谢。

1 个答案:

答案 0 :(得分:2)

尝试这个,

SELECT  a.*,      -- will display all records from reports table
        b.*       -- will display all records from bads table
FROM    reports a
        INNER JOIN bads b
            ON a.set_of_bads = b.set_it_belongs_to
WHERE   a.report_ID = 123

更新1

CREATE TABLE语句中,在bads

上指定外键约束
CREATE TABLE bads
(
bad_id INT AUTO_INCREMENT   ,
 set_it_belongs_to VARCHAR(50),
 field2 VARCHAR(50),
 field3 VARCHAR(50),
 CONSTRAINT bads_pk PRIMARY KEY (bad_id),
 CONSTRAINT bads_fk FOREIGN KEY (set_it_belongs_to) 
    REFERENCES reports(set_of_bads)
);

并确保primary key表的reportsset_of_bads