使用MySQL 5.7,我有一個movie
表有許多單值字段:有沒有辦法在一次與MySQL的通話中從大量的一對多表中提取數據?
+--------------+--------------+
| Field | Type |
+--------------+--------------+
| id | int(11) |
| title | varchar(255) |
| release_year | int(11) |
| rating | int(11) |
+--------------+--------------+
當我調用該表的查詢,像SELECT * FROM movie WHERE id = 5
它將只返回一個行與每一列的數據,符合市場預期。
我有一些與movie
表有一對多關係的表。我有movie_subtitle
,movie_language
,movie_actor
等。這裏是一個例子:
+--------------+--------------+
| Field | Type |
+--------------+--------------+
| id | int(11) |
| movie_id | int(11) |
| subtitle | varchar(255) |
+--------------+--------------+
我的問題是,爲了讓我得到所有的現場數據的一個單一的電影,看來我需要撥打約10 SELECT
來電。一個用於movie
表,然後每個添加附加表一個。
如果用戶有1,000部電影,這很快就會變成10,000 SELECT
調用,如果我試圖對整個集合運行更大的查詢。
有沒有辦法讓這個所有輸出在之一打電話?或者這只是它應該的方式?我覺得有更好的方法來做到這一點,我只是沒有足夠的數據庫關係的教育,以瞭解我在這裏失蹤。
我需要將我從這些調用接收到的數據傳遞到我的PHP頁面以將其放入JSON中。
是否有一個原因,你不只是使用連接將數據分組在一起?如果沒有表格結構,樣本數據(可能是sql fiddle)並且知道你想要作爲樣本,那麼這裏的人們只會猜測。 –
我會建議要麼加入數據在一起,要麼執行多個查詢拉出額外的數據,你可以稍後在php中進行合併。在聯接的情況下,它的效果很好,但是通常在返回結果中會出現重複數據,您將不得不忽略一堆數據或根據輸出結果將數據組合到一個列中。使用多個查詢,它只爲一條記錄提供很少或沒有好處,但是對於多條記錄,您的查詢數量不會增加。 –
'JOIN'將帶有相同數據的許多行帶回,除了一列之外...例如:電影Goonies將帶回三行,所有這些行都具有相同的數據,期望每一行中的'genre'列將是Adventure ,喜劇和家庭。只是尋找一種方法來避免這種情況。 –