【问题标题】:How to view data on single column如何查看单列数据
【发布时间】:2020-07-23 12:07:50
【问题描述】:

我正在尝试创建一个表格视图,其中包含相关数据的多个表格被组合在一起,与 5 个单独的表格相比,表格更具可读性。

正在连接的所有这些表都包含预订参考作为外键。

这些表格中的大多数都包含与单个预订参考相关的多个条目。

例如某些预订有多只猫

这是我创建的视图语句:

USE CATTERY;
CREATE VIEW ALLBOOKING
AS
SELECT BOOK.Ref, BOOK.Food, BOOK.Interact, BOOK.Litter, BOOK.Start_Date, BOOK.End_Date, BOOK.Deposit, BOOK.Cost,
    GROUP_CONCAT( DISTINCT BOOKOWNER.ID) AS `Owner`,
    GROUP_CONCAT( DISTINCT BOOKCAT.Chip_ID) AS Cats,
    GROUP_CONCAT( DISTINCT BOOKOBS.ID) AS Observations,
    GROUP_CONCAT( DISTINCT BOOKROOM.ID) AS Room
FROM BOOK 
INNER JOIN BOOKOWNER ON BOOK.Ref = BOOKOWNER.Ref 
INNER JOIN BOOKCAT ON OOK.Ref = BOOKCAT.Ref
INNER JOIN BOOKOBS ON BOOK.Ref = BOOKOBS.Ref 
INNER JOIN BOOKROOM ON BOOK.Ref = BOOKROOM.Ref 

GROUP BY BOOK.Ref, BOOKOWNER.ID, BOOKCAT.Chip_ID, BOOKOBS.ID, BOOKROOM.ID

这是结果表:

(ref)(food)(interact)(litter)(start date)(end date)(deposit)(cost)(owner)(catid)(observations)(room) 
'1', '1', '1', '0', '2019-11-22', '2019-11-25', '5', '53', '1', '1', '1', '4'
'1', '1', '1', '0', '2019-11-22', '2019-11-25', '5', '53', '1', '1', '2', '4'
'1', '1', '1', '0', '2019-11-22', '2019-11-25', '5', '53', '1', '1', '3', '4'
'1', '1', '1', '0', '2019-11-22', '2019-11-25', '5', '53', '1', '1', '4', '4'
'2', '0', '0', '2', '2019-11-24', '2019-11-28', '10', '104', '1', '2', '5', '3'

如您所见,有多个关于参考编号 1 的条目,据我所知,我遵循的格式应该未规范化此视图并在单个字段中显示多组数据。

【问题讨论】:

    标签: mysql sql join group-by sql-view


    【解决方案1】:

    很可能问题出在您的GROUP BY 子句上,其列与SELECT 子句中的非聚合列不匹配。事实上,您甚至可以在 GROUP BY 子句中聚合列:例如,BOOKOWNER.ID 属于 GROUP_CONCAT() 表达式 GROUP BY 子句之一。

    在大多数数据库中,这会导致错误(在 MySQL 中,如果启用了 sql 模式 ONLY_FULL_GROUP_BY)。

    考虑改变这个:

    GROUP BY BOOK.Ref, BOOKOWNER.ID, BOOKCAT.Chip_ID, BOOKOBS.ID, BOOKROOM.ID
    

    收件人:

    GROUP BY 
        BOOK.Ref, 
        BOOK.Food, 
        BOOK.Interact, 
        BOOK.Litter, 
        BOOK.Start_Date, 
        BOOK.End_Date, 
        BOOK.Deposit, 
        BOOK.Cost
    

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2021-05-11
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2019-07-13
      • 2020-07-28
      • 2014-03-23
      相关资源
      最近更新 更多