数据库设计:如何查询多对多table

Database design: How to query multiple to multiple table

我有一个用于网站展示的系统

展会数据可能来自多方数据的差异table.

喜欢这个设计:

我的网站使用 MySQL 和 PHP

现在的问题是我不知道如何查询它。或者这个设计有缺陷。


编辑 1:

对不起,我没有表达我的意图。

例子:我希望查询一个数据列表。首先我需要像 1.

这样的过滤器 ExhibitionType

所以我需要创建一个 SQL 比如:SELECT * FROM ExhibitionBase WHERE ExhibitionTypeId = 1

第二步我必须读取 ExhibitionDataTypeExhibitionDataId 每行数据。并根据不同类型的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 名称相同的列名称。