【问题标题】:SQL Join Tables and Inner Joins?SQL 连接表和内部连接?
【发布时间】:2017-10-30 20:14:00
【问题描述】:

我有 3 张桌子。产品、步骤和图片。

  • 产品字段:ID、名称
  • 步骤字段:Id、ProductId、描述
  • 图片字段:Id、StepId、图片

我正在使用 Microsoft Visual Studio 和 Razor,目前我正在使用 UrlData 在数据库中加载正确的表和字段。 www.example.com/Id=1(显示产品 #1)

var productId = UrlData[0].AsInt();
var product = db.QuerySingle("SELECT * FROM Steps WHERE Id = @0", productId);

我已经成功地提取了我想要显示的数据,但现在的问题是我使用非常简单的 +1 UrlData 或 -1 UrlData 进行下一步或倒退。显然,如果删除一个步骤并且网站不会在产品的步骤结束时停止,这将不起作用。

我现在已经到了这一点,我相信我需要使用 Join Tables 我需要使用 UrlData 显示以上 3 个表中的所有数据。

我创建了一个测试连接表,例如:“joinTest” 字段:Id、PictureId、StepId、ProductId

如何查询此表以显示上述第一段中的所有数据?

我的剃刀查询的更多示例:

string description = product.description;
var step = db.QuerySingle("SELECT * FROM Products WHERE Id = @0", product.ProductId);
var steps = db.Query("SELECT Id, StepName FROM Steps WHERE ProductId = @0", productId).ToList();
var photos = db.Query("SELECT Id, FileTitle FROM Pictures WHERE StepId = @0", productId).ToList();

【问题讨论】:

    标签: sql join razor


    【解决方案1】:

    您无需为此添加新表。只是一个新字段 NextStepIdStepSeqNum 到现有的 Steps 表。您还需要将当前步骤添加到 Url。

    【讨论】:

    • 我打算用 Number Sequencing 做一些测试 没想到这个方法应该很好用 谢谢!
    【解决方案2】:

    嗯,如果您只想显示 3 个表中的数据,为什么要创建第三个表?就这样吧:

    select products.name as Product, steps.description as Description, pictures.filetitle as MyPicture   
    from pictures
    join steps on steps.id=pictures.stepid
    join products on products.id=steps.productid 
    where steps.id=@yourvariable
    

    但我认为这不会解决 +1 或 -1 的问题,实际上我看不到两者之间的关系并加入命令!

    在更改页面之前加载包含所有可用 ID 的数组不是更好吗?

    您可以指定任何列,您将看到所有您想要的数据。

    这是你想要的吗?

    【讨论】:

    • 感谢您的帮助,这个例子帮助很大!
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多