数据库设计:如何查询多对多table
Database design: How to query multiple to multiple table
我有一个用于网站展示的系统
展会数据可能来自多方数据的差异table.
喜欢这个设计:
Table [ExhibitionType] used for differentiate category.
Table [ExhibitionBase] used for link extra Sub-Type table & data in different table.
我的网站使用 MySQL 和 PHP
现在的问题是我不知道如何查询它。或者这个设计有缺陷。
编辑 1:
对不起,我没有表达我的意图。
例子:我希望查询一个数据列表。首先我需要像 1.
这样的过滤器 ExhibitionType
所以我需要创建一个 SQL 比如:SELECT * FROM ExhibitionBase WHERE ExhibitionTypeId = 1
第二步我必须读取 ExhibitionDataType
和 ExhibitionDataId
每行数据。并根据不同类型的ExhibitionData
数据出来合并到ExhibitionBase
子table中。
如何使用 SQL 查询它。
这是我的问题。
SELECT b.*, dt.Name, di.name
FROM ExhibitionBase AS b
JOIN ExhibitionDataType AS dt ON dt.id = b.ExhibitionDataType
JOIN ExhibitionDataId AS di ON di.id = b.ExhibitionDataId
WHERE ExhibitionTypeId = 1
风格建议:
- 不要在列和 table 名称前加上数据库名称;它使事情变得混乱。 ("Exhibition")
- 没有与其 table 名称相同的列名称。
我有一个用于网站展示的系统
展会数据可能来自多方数据的差异table.
喜欢这个设计:
Table [ExhibitionType] used for differentiate category.
Table [ExhibitionBase] used for link extra Sub-Type table & data in different table.
我的网站使用 MySQL 和 PHP
现在的问题是我不知道如何查询它。或者这个设计有缺陷。
编辑 1:
对不起,我没有表达我的意图。
例子:我希望查询一个数据列表。首先我需要像 1.
这样的过滤器ExhibitionType
所以我需要创建一个 SQL 比如:SELECT * FROM ExhibitionBase WHERE ExhibitionTypeId = 1
第二步我必须读取 ExhibitionDataType
和 ExhibitionDataId
每行数据。并根据不同类型的ExhibitionData
数据出来合并到ExhibitionBase
子table中。
如何使用 SQL 查询它。
这是我的问题。
SELECT b.*, dt.Name, di.name
FROM ExhibitionBase AS b
JOIN ExhibitionDataType AS dt ON dt.id = b.ExhibitionDataType
JOIN ExhibitionDataId AS di ON di.id = b.ExhibitionDataId
WHERE ExhibitionTypeId = 1
风格建议:
- 不要在列和 table 名称前加上数据库名称;它使事情变得混乱。 ("Exhibition")
- 没有与其 table 名称相同的列名称。