【问题标题】:Joining three MS SQL Tables in PHP to display random products在 PHP 中加入三个 MS SQL 表以显示随机产品
【发布时间】:2012-11-28 14:29:59
【问题描述】:

我试图在我正在创建的商店中设置一个部分,以显示来自该类别 ID 的 5 种随机产品。

首先,每个类别都有一个 ID,还有一组 Sub Catrgories,每个 Sub Cat 都有一个 ID,每个 Sub Cat 中都有许多产品。每个产品也有一个 ID。

Products 表包含 ProductID 和 SubCatID。 SubCat 表包含 SubCatID 和 CatID Cat 表仅包含 CatID。

所以我需要按 CatID 显示 5 个随机产品。我可以使用类似这样的查询来获取随机产品:

$randomprod = mssql_query("SELECT TOP 5* FROM Products WHERE SubCatID = '1' ORDER BY NEWID()");
while ($echorand = mssql_fetch_array($randomprod)) { 

我需要一种方法来加入表格,以便我可以显示某个 CatID 下的所有产品,但我发现这很困难,因为我的 Products 表不包含 CatID。我知道有很多连接,但对 PHP 来说相当新,对 MS SQL 来说甚至更新。谁能告诉我什么加入是最好的,或者请指出正确的方向?

【问题讨论】:

    标签: php sql sql-server join


    【解决方案1】:

    将产品加入子类别,将子类别加入类别,如下所示:

    SELECT TOP 5 Products.Name, SubCatergory.Name, Category.Name
    FROM Products
    INNER JOIN SubCatergory ON Products.SubCatID = SubCatergory.SubCatID
    INNER JOIN Catergory ON SubCatergory.CatID = Category.CatID
    WHERE Category.CatID = 1
    ORDER BY NEWID()
    

    我在上面的例子中使用了INNER JOIN

    【讨论】:

    • 这太好了,谢谢 :) 我已经更改了它,以便选择所有字段,因为我还显示了除名称之外的其他信息。我只是通过使用 Products.* 而不是 Products.Name 来做到这一点。但是我想知道是否有办法将 TOP 5 纳入其中,因为 Products.TOP 5 * 会引发错误,这是可能的还是应该以其他方式完成?
    • 当时很愚蠢...选择前 5 种产品。* +1 不得不忍受我。 :p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多