2016-02-28 52 views
0

我想從VIDEOPLAYLIST中檢索一個完整的對象,其中包含完整的USER對象以及與其相關的所有VIDEO對象。構造一個MySQL表,其中PLAYLIST表引用多個VIDEO id整數和一個USER表id

我知道我需要使用LEFT JOIN來合併它們,但我無法理解我應該如何設置我的PLAYLIST表格以及如何在涉及到多個VIDEO ID時查詢它。

這是我目前的數據庫EER圖: Original EER Diagram of my database tables

我應該創建一個多播放列表和視頻之間一對多的關係? 我應該以何種方式將所有的VIDEO ID存儲在PLAYLIST表中? 然後如何能夠查詢它?

這是我堅持:

SELECT * FROM videoplaylist LEFT JOIN user LEFT JOIN video ON user.id = playlist.user_id AND videos.... 

PS。我不會在當時查詢一個PLAYLIST,因爲我需要以列表格式顯示它們。

+1

是的。沒錯。 – Strawberry

+0

謝謝,現在我又向前邁了一步:) – andersfylling

回答

1

是的,如果您希望將一個視頻添加到多個播放列表中,您應該在視頻和播放列表之間創建多對多關係,反之亦然。

因此,您的多對多關係表可能看起來像這樣,其中playlist_idvideo_id的組合是您的主要關鍵。

playlist_has_video 
------------------ 
playlist_id 
video_id 

如果您希望能夠將多個視頻添加到播放列表中,您也必須在此表中創建一個id col。所以現在id是你的主要關鍵。

playlist_has_video 
------------------ 
id 
playlist_id 
video_id 

當您想要使用戶進行排序播放列表考慮增加另一個山坳order_id您正以米表。

playlist_has_video 
------------------ 
id 
playlist_id 
video_id 
order_id 

現在讓我們看看在選擇查詢(我將把最後的設計,id + order_id

檢索從播放列表中的所有視頻:

SELECT video.* FROM playlist_has_video AS phv LEFT JOIN video ON phv.video_id = video.id WHERE phv.playlist_id = :playlist_id ORDER BY order_id ASC; 

檢索所有播放的視頻在:

SELECT playlist.* FROM playlist_has_video AS phv LEFT JOIN playlist ON phv.playlist_id = playlist.id WHERE phv.video_id = :video_id; 

你必須改變你的視頻 - 如果您使用此方法,也請使用表(請確保您刪除了playlist_id)

video 
--------- 
id 
title 
description 
user_id 
transcript_id 
created 
updated 
+1

不錯8分鐘。 – Strawberry

+0

@Strawberry:哈哈謝謝。今天我喝了很多咖啡:D –

+0

你太快了,Stackoverflow不會讓我批准這個解決方案,但哈哈。 – andersfylling

相關問題