从两个表中选择并使用数据

时间:2017-02-10 14:05:29

标签: mysql node.js

我试图从两个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
 }

但我真正需要的是:

{
 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 个答案:

答案 0 :(得分: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 = ?

然后,您可以在应用程序中构建所需的结构。