两个表之间的查询?

时间:2015-12-01 13:19:21

标签: php mysql sql join

我有一个问题要问你。我认为这很容易解决,但我非常关注这一点。

我有两张桌子,一张是产品,另一张是收藏。收藏夹表格包含2个字段id_userid_product

现在,我想查询所有收藏夹产品并在我的网页上显示。我想我必须在我的查询上做join,但此刻我真的迷路了。

例如,我想用id = 3来显示用户的所有收藏产品,我该怎么做?

4 个答案:

答案 0 :(得分:3)

为了将来参考,在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

答案 1 :(得分:1)

您正在通过联接查找此类查询。

select a.* from favourites as a join products as b on a.id_product= b.id

答案 2 :(得分:0)

您需要针对您的"收藏夹"进行主查询。表并加入products表,假设您的id_product字段指向product表中的id字段:

class AnyType{ }

class ThirdConcretePrototype : Prototype<AnyType> { } // fails at compiletime, AnyType does not inhertit from Prototype<T>

请注意,我在这里使用RIGHT JOIN是因为您希望确保右侧表(在本例中为收藏夹)具有要检索的信息(否则,如果id_product指向不存在的id,您将获得NULL结果) 。另请注意,我已为每个表分别添加了别名(SELECT fav.*, prod.* FROM favourites fav RIGHT JOIN products prod ON prod.id = fav.id fav),因为这样可以更轻松/更快地编写查询。

希望这有帮助!

答案 3 :(得分:0)

您可以使用INNER JOIN。

如果你按照下面的例子,你可以得到这个想法。我不知道你的产品表中有什么。根据您的描述,您似乎加入了用户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