gpt4 book ai didi

mysql - 将属性名称与 MySQL 中的表名称连接起来

转载 作者:行者123 更新时间:2023-11-29 12:02:36 25 4
gpt4 key购买 nike

我需要创建一个表来存储属性的多个值,如下所示:

Table Main
____________________________________________________
| Person | Hobbies |TimeSpent(hrs) |
----------------------------------------------------
| John | gardening, guitar | 2,4 |
| Harry | programming | 8 |
----------------------------------------------------

在网上查找后,解决方案似乎涉及单独的表并将它们连接起来:

Table John
| Hobbies | TimeSpent |
---------------------------
| Gardening | 2 |
| Guitar | 4 |
---------------------------

Table Harry
| Hobbies | TimeSpent |
---------------------------
| Programming| 8 |
---------------------------

两个问题:

  1. 这是正确的方法吗? John 和 Harry 的 table 预计会很大。
  2. 如何自动为每个人创建一个表,并以表名作为各自的姓名,以及如何在主表中找到 John 的表“John”?

最佳答案

我认为以下设计可能适合您。

[人]

人员 ID(主键),姓名

[爱好]

爱好 ID(主键),爱好

[PERSON_HOBBY]

PERSON_ID(人员的主键、外键),HOBBY_ID(爱好的主键,爱好的外键),TIME_SPENT

以下语句应适用于新设计:

SELECT p.NAME, GROUP_CONCAT( h.HOBBY ORDER BY ph.HOBBY_ID ASC SEPARATOR ',') AS 'HOBBIES', 
GROUP_CONCAT( ph.TIME_SPENT ORDER BY ph.HOBBY_ID ASC SEPARATOR ',') AS 'HOURS SPENT'
FROM PERSON_HOBBY ph
LEFT JOIN PERSON p ON p.PERSON_ID = ph.PERSON_ID
LEFT JOIN HOBBY h ON h.HOBBY_ID = ph.HOBBY_ID
GROUP BY ph.PERSON_ID;

关于mysql - 将属性名称与 MySQL 中的表名称连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com