2

テーブルとして定義し、 、、およびのmusic3 つの列を指定したとします。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

「テーブル内のテーブル」は必要ありません。代わりに、あるテーブルのレコードと別のテーブルのレコードをクエリで照合する必要があります。このクエリの上にビューを作成し、後でそのビューを通常のテーブルのように使用できます。

ご想像のとおり、外部キー関係を確立してから、2 つのテーブルを結合します。

于 2013-06-14T13:09:19.497 に答える
2

「テーブルの中のテーブル」はなく、テーブルとそれらの間の関係だけです。

テーブルreleasey には、 musicIdと year の 2 つの列があります。musicId は、音楽テーブルへの外部キーです。

これら2つを(バインドと呼んだように)結合します。

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 = '必要な 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 に答える