两个表之间的查询? [关闭]
Posted
技术标签:
【中文标题】两个表之间的查询? [关闭]【英文标题】:Query between two tables? [closed] 【发布时间】:2016-03-05 10:28:11 【问题描述】:我有一个问题要问你。我认为这很容易解决,但我非常关注这一点。
我有两张桌子,一张是产品,另一张是收藏夹。收藏夹表有 2 个字段,id_user
和 id_product
。
现在,我想查询所有收藏的产品并将它们显示在我的网页上。我想我必须对我的查询做一个join
,但现在我真的迷路了。
例如我想显示所有来自id = 3
的用户最喜欢的产品,我应该怎么做?
【问题讨论】:
你能搞定表格布局吗? 子查询或连接。子查询示例:SELECT * FROM products WHERE id IN(SELECT id_product FROM favourites WHERE id_user = 3)
【参考方案1】:
您可以使用 INNER JOIN。
如果您按照下面的示例进行操作,您就会明白这一点。我不知道您的 Products 表中有什么。根据您的描述,您似乎会使用用户 ID 加入。
USE AdventureWorks;
GO
/*
Create a Join on 2 tables to show information from both. The example tables are from the AdventureWorks database:
Production.Product
Production.ProductInventory
In this example we'll look to get the Product ID and Name from the Product table and the inventory quantity, shelf, and bin from the ProductInventory table.
*/
SELECT
/* Precede each column you want to select with the identifier of which table it's coming from */
prod.ProductID,
prod.Name,
inv.Shelf,
inv.Bin,
inv.Quantity
/* Select items from the Product Table */
FROM Production.Product AS prod
/* Use an INNER JOIN to get the items related to the Product table that are in the ProductInventory table based on the ProductID */
INNER JOIN Production.ProductInventory AS inv ON
prod.ProductID = inv.ProductID
【讨论】:
【参考方案2】:您需要对您的“收藏夹”表进行主要查询并加入产品表,因此假设您的 id_product 字段指向产品表中的 id 字段:
SELECT fav.*, prod.* FROM favourites fav RIGHT JOIN products prod ON prod.id = fav.id
请注意,我在这里使用 RIGHT JOIN 是因为您要确保右侧表(在本例中为收藏夹)具有要检索的信息(否则,如果 id_product 指向不存在的 id,您将获得 NULL 结果)。另请注意,我为每个表指定了一个别名(分别为 fav
和 prod
),因为这使查询更容易/更快地编写。
希望这会有所帮助!
【讨论】:
【参考方案3】:您正在寻找这样的带有联接的查询。
select a.* from favourites as a join products as b on a.id_product= b.id
【讨论】:
也许这是解决方案,但我想获取产品信息,所以会是这样,不是吗?select b.* from products b join favourites a on a.id_product = b.id
是的,这就是您的查询应该是这样的......所以您将根据产品 ID 获得每个最喜欢的产品..done【参考方案4】:
为了将来参考,在 Stack 上提问时,您需要包含所有相关信息。比如你的数据库布局。我们不是读心术者,不过这里只是猜测。
Select * from Favorites junk
Left join Products poop on
poop.id = junk.id_product
Left join Users stuff on
stuff.id = junk.id_user
【讨论】:
以上是关于两个表之间的查询? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询从具有相同列“名称”的其他两个表中获取具有不同值的单列“名称”[关闭]