2017-02-10 50 views
0

我試圖從兩個MySQL表中獲取數據並將每個數據推送到數組中。 我必須使用同一列 - item_id的表項和用戶。現在即時通訊請求從他們的數據與從兩個表中選擇並用數據創建對象

var query = "SELECT * FROM items, users WHERE items.item_id=?"; query = connection.format(query,req.params.item_id);

在此之後,即時得到數據的牆。就像這樣:

{ 
{ user_id: 13213, 
    user_name: 'John', 
    item_id: 1337, 
    item_name: Leet stuff, 
    item_price: 13,37 
}, 
{ user_id: 12345, 
    user_name: 'Mike', 
    item_id: 1337, 
    item_name: Leet stuff, 
    item_price: 13,37 
} 

但我actualy需要的是這樣的:

{ 
users: [ 
    { user_id: 13213, 
    user_name: 'John' 
    }, 
    { user_id: 12345, 
    user_name: 'Mike' 
    } 
], 
    item_id: 1337, 
    item_name: Leet stuff, 
    item_price: 13,37 
} 

回答

1

你不能這樣做,在一個單一的查詢。但是,您可以使用兩種不同的查詢並組合輸出,例如:

SELECT u.user_id, u.user_name 
FROM users u JOIN ITEMS i ON j.user_id = i.user_id 
WHERE i.item_id = ?; 

這會給你一個用戶列表。然後,可以使用下面的查詢來獲取項目的詳細信息:

SELECT item_id, item_name, item_price 
FROM items 
WHERE item_id = ? 

然後,您可以構建所需的結構在你的應用程序。