2010-11-25 36 views
0

我試着四處尋找答案,但我仍然有點失落。SQL多個表和LookUp表

我有一個網站使用PHP/SQL存儲有關音樂曲目的詳細信息。 我想搜索/添加/編輯/刪除曲目,專輯,作曲家,bpm,時間簽名,持續時間,儀器儀表,流派,關鍵字(描述)。 到目前爲止,我只用三張表和一張查找表(曲目,作曲家,專輯)完成了一個測試版本,該表格似乎可以在搜索時正常工作。

表 '軌道'(ID,tracktitle) 表 '作曲家'(ID,composername) 表 '的專輯'(ID,ALBUMTITLE) 表「albumtrack(track.id,composer.id,album.id)

但我似乎無法在添加新曲目併爲其分配作曲者和專輯時獲得插入位。軌道標題進入軌道表沒關係,但是我怎樣將它鏈接到專輯曲目查找表中。

我在這裏需要一些額外的位嗎?

$sql = "INSERT INTO track SET 
    track.tracktitle='$tracktitle' "; 

另外...我正在通過使用每個位表(bpm表,持續時間表,流派表)的正確方法?

一首曲目可能會有多個持續時間(不同的編輯),bpms,拍號,所以很多數據將被共享。 我也希望用戶能夠搜索一系列持續時間或bpm,例如2到3分鐘之間的曲目。

在我展開我的測試版本之前,我需要一些建議,以確定我是否以最好的方式做到這一點。

感謝

回答

0

假設「ID」字段的自動增量值(數據庫生成他們爲你),然後,你插入軌道之後,必須(使用mysql_insert_id())恢復剛剛添加的行的id 。然後,您可以使用該ID以及專輯和作曲家ID來插入專輯曲目。

另外,您應該知道您使用的INSERT語法是MySQL特定的。如果您從不考慮切換數據庫,那很好,但您也可能想要了解「標準」INSERT語法(INSERT INTO tablename (col1, col2. . .) VALUES (val1, val2. . .))。

+0

謝謝你。我會盡力 – paj 2010-11-25 19:30:42

0

你的INSERT查詢應該是這樣的:

$sql = "INSERT INTO track VALUES('','$tracktitle','$duration','$etc')"; 

的第一個值留空爲您自動遞增的ID。

「另外...我是通過使用每個位的表(bpm表,持續時間表,時間表,流派表)來解決這個問題嗎?」

你能不能只有一個表有多個字段(bbm,持續時間等)。

希望這會有所幫助。

+0

謝謝你們,非常有幫助。是的,我可以把它做成一張桌子,但是當我正在閱讀一些教程書時,他們似乎贊成查找表。但是那些只有在每個表格有很多條目鏈接在一起的情況下才有用?我想要做什麼不是必需的?謝謝 – paj 2010-11-25 19:30:02