2

假设我定义music为一个表并给它 3 列:albumartisttrack

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与另一个表中year的表绑定releasedy。所以我可以知道哪一年包含哪些音乐。如果我没记错的话,我必须用外键来做。我应该如何进行?

4

3 回答 3

4

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

如您所料,建立外键关系,然后将两个表连接起来。

于 2013-06-14T13:09:19.497 回答
2

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

releasey将有 2 列,musicId 和 year。musicId 是音乐表的外键。

加入(如您所说的绑定)这两个:

SELECT * 
FROM music m
INNER JOIN releasedy r ON m.id = r.musicId
WHERE year = ..

在这个例子中这一切都是多余的,但它说明了你想要的“绑定”。

于 2013-06-14T13:31:51.130 回答
0
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);

$id = '你需要的身份证'; $read = "select * from releasey where id = ".(int)$id; $data = mysql_query($read); $musics = unserialize(base64_decode($data['Year'])); foreach($musics as $music){ // 做点什么 }

于 2019-05-03T17:12:00.277 回答