是否可以在表中包含表(mysql)?

是否可以在表中包含表(mysql)?,mysql,sql,create-table,Mysql,Sql,Create Table,假设我将音乐定义为一个表,并给它三列:专辑,艺术家,和曲目: CREATE TABLE music ( id int auto_increment primary key, album varchar(45) not null, artist varchar(30) not null, track int(8) ); 现在我需要另一个表releasedy,其中包含一列: 'Year' and the table music 为此,我想我必须将表music中

假设我将
音乐
定义为一个表,并给它三列:
专辑
艺术家
,和
曲目

CREATE TABLE music (
    id int auto_increment primary key,
    album varchar(45) not null,
    artist varchar(30) not null, 
    track int(8)
); 
现在我需要另一个表
releasedy
,其中包含一列:

'Year' and the table music
为此,我想我必须将表
music
中的一些行与另一个表
releasedy
中的
year
绑定在一起。所以我可以知道哪一年包含哪些音乐。如果我没有错的话,我必须用外键。如何继续?

您不希望“表中的表”,而是希望在查询中将一个表中的记录与另一个表中的记录进行匹配。您可以在此查询之上创建一个视图,并在以后使用该视图,就像它是一个常规表一样

正如您所猜测的,建立一个,然后。

没有“表中的表”,只有表和它们之间的关系

releasedy将有两列,musicId和year。musicId是音乐表的外键

连接(您称之为绑定)这两个:

在本例中,这完全是多余的,但它说明了您想要的“绑定”


$id='您的必要id'$read=“select*from releasedy where id=”(int)$id$data=mysql\u查询($read)$musics=非序列化(base64_解码($data['Year'));foreach($music as$music){//do something}

为什么不在
music
表中设置一列
year
?从一张单独的桌子上你能得到什么好处?就像安德斯建议的那样,在你的音乐桌上放一个“年份”栏会更有意义。如果您想查找特定年份发布的所有音乐,那么您可以使用SELECT*FROM music WHERE year=2013(或您要查找的任何年份),这只是一个示例,以了解我是否能够做到这一点。请编辑您的答案并解释代码工作的原因。$id='your required id'$read=“select*from releasedy where id=”(int)$id$data=mysql\u查询($read)$musics=非序列化(base64_解码($data['Year'));foreach($music as$music){//do something}
SELECT * 
FROM music m
INNER JOIN releasedy r ON m.id = r.musicId
WHERE year = ..
class Functions { 
    public function getRows($sql){ 
         $result = mysql_query($sql); 
         while($row = mysql_fetch_assoc($result)){ 
               $data[] = $row; 
         } 
         return $data; 
    } 

    public function getMusicData(){ 
         $data = $this->getRows("SELECT * FROM music"); 
         return base64_encode(serialize($data)); 
    } 
} 

$func = new Functions(); 
$music = $func->getMusicData(); 
$sql = "insert into releasedy (id,Year) values (NULL,'".$music."')";
mysql_query($sql);