是否可以在表中使用表(mysql)?

时间:2013-06-14 13:04:25

标签: mysql sql create-table

假设我将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绑定。所以我可以知道哪一年包含哪些音乐。如果我没错,我必须用外键做。我该怎么办?

3 个答案:

答案 0 :(得分:4)

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

如您所知,建立foreign key relationship,然后JOIN the two tables

答案 1 :(得分:2)

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

  

已发布将有2列,musicId&年。 musicId是音乐表的外键。

     

加入(正如你所说的bind)这两个:

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

在这个例子中哪个是矫枉过正,但它说明了你想要的“绑定”。

答案 2 :(得分: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 ='您的必要ID'; $ read =“ select * from releasey,其中id =”。(int)$ id; $ data = mysql_query($ read); $ musics =反序列化(base64_decode($ data ['Year'])); foreach($ musics as $ music){//做某事}