我有一個基於來自2代不同表的多個記錄插入到表中的一些記錄的多條記錄..插入到表從多個表
表: 目標:player_list_items
源1:list_items
Source2:map_details
玩家應該播放一個包含項目列表的列表;列表需要在地圖上播放。
該地圖包含具有其某些X和Y位置的佔位符,我需要將list_items放置在這些佔位符後面。爲此,我創建了包含隨機定位在佔位符後面的list_items的目標表。
以下是我可以將用戶的list_items轉儲到目標表中的查詢,但現在問題是如何從source2表中爲每個list_items隨機獲取X和Y位置。
INSERT INTO player_list_items
(player_list_list_id, player_list_player_id, player_list_item_id, player_list_item_cellX, player_list_item_cellY)
SELECT li.list_item_list_id, 584488596, li.list_item_item_id, 2, 5
FROM list_items li
WHERE li.list_item_list_id = 2
任何一個insert with multiple selects
或even another query {update}
後,這樣的工作對我來說,因爲這將每列表中的用戶只運行一次。
每個列表包含多個項目,因此上述查詢返回多個項目並且其工作正常,需要考慮的是map_details表還包含多個佔位符,並且它們肯定會超過list_items的#號。
所需的查詢應該從map_details表中獲取所有位置X和Y,然後隨機分配給每個單獨項目,每個項目的位置必須是唯一的。
我已經看到了插入多個選擇的例子,但他們是單行插入,我的問題是多個表中的多行,也是隨機的。
I have a Stored Procedure for this case
因爲它有很多其他的東西工作正常,如果任何人在這裏想給予答案使用SP將是有用的,而不是一個問題,我使用。
希望上述的東西是有道理的,並澄清我的觀點。
UPDATE
我的第二個查詢:
INSERT INTO player_list_items(player_list_list_id,player_list_player_id,player_list_item_id,player_list_item_cellX,player_list_item_cellY)
SELECT list_item_list_id, 584488596, list_item_item_id, game_map_details.cellX, game_map_details.cellY
FROM list_items
JOIN (SELECT * FROM game_map_details WHERE map_id = 1 ORDER BY RAND()) AS game_map_details
WHERE list_item_list_id = 2
GROUP BY list_item_item_id
做這增加了數據從map_details t能,但數據不是隨機的,實際上它從list_items表
問候只插入1對記錄的所有4條記錄
@JOAT感謝您的答覆,恐怕你沒有得到實際的場景或我無法解釋..讓我編輯我的問題補充一些例子 – Junaid
我怎麼不明白?再次閱讀您的文章,似乎很清楚您需要什麼:您有一個對象列表,並且您希望將每個對象與另一個列表中的記錄隨機關聯,而且不存在任何一對多關係。爲此,您可以將連續的數字分配給大集合,並將相同範圍的隨機數字分配給小集合。我會在我的答案中給出一個更具體的例子。 – 2012-07-03 19:55:26