是否可以在表中包含表(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);