如何创建一个表,其中一列包含具有不同ID的所有行的相同值?(为清晰起见,请参阅布局)

时间:2018-06-19 09:37:35

标签: mysql phpmyadmin

Image showing example report, empty

在此表中,所有错误代码的开始日期,完成日期将相同,但在开始时将作为输入。

1 个答案:

答案 0 :(得分:1)

这是猜测,因为你的问题不是很清楚。您正在寻找一对多模式来保存此数据集。

看起来你有两个实体(用entity-relationship data modeling的说法)。

  1. 评分
  2. 查看错误
  3. 评论与评论错误存在一对多关系:每篇评论可能有零个或多个评论错误。您在图像中显示了两个,但您仍应使用一对多关系。

    您的评论实体会变成这样的表格

    review:
       review_id    INT   PK
       type         1=Peer Review, 2= Internal Review
       score        FLOAT?  INT?
       start_date   TIMESTAMP
       end_date     TIMESTAMP
    

    您的评论错误实体变成了这样的表

    review_error_id    INT PK
    review_id          INT FK to review table
    ordinal            INT   0,1,2 showing order of items in report
    error              VARCHAR(255)  
    description        VARCHAR(255)
    quantity           INT? FLOAT?
    

    然后,要生成示例表中提示的报告,请执行

     SELECT review.type,
            review_error.error,
            review_error.description,
            review_error.quantity
            review.score,
            review.start_date,
            review.end_date
       FROM review
       LEFT JOIN review_error ON review.review_id = review_error.review_id
      ORDER BY review.review_id
               review_error.ordinal
    

    您使用LEFT JOIN,因为普通JOIN会取消review行没有匹配的review_error行。

    如果您想要图像中显示的框和列标题,则需要使用客户端程序生成这些框和列标题。例如,您可以在HTML表格中定义单元格周围的边框。