2015-05-11 30 views
2

我有3张桌子。产品,步骤和图片。SQL加入表和内部联接?

  • 产品领域:ID,姓名
  • 步骤字段:ID,产品编号,说明
  • 图片字段:ID,StepId,图片

我与Microsoft Visual Studio和剃刀工作目前我正在使用例如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是IM或-1 UrlData进入下一步或向后。显然,如果删除某个步骤并且该网站不会在产品的步骤结束时停止,则这不起作用。

我现在在这一点上,我相信我会需要使用连接表,我将需要通过使用UrlData显示3个表中的所有数据。

我创建了一个测试连接表例如:“joinTest” 字段:ID,PictureId,StepId,产品编号

我将如何查询该表中第一款以显示所有数据的上面?我的剃须刀查询

更多的例子:

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(); 

回答

1

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

+0

我打算用Number Sequencing做一些测试,没有想到这种方法应该好好的工作谢谢! – 702cs

0

赫姆,如果你只是想显示从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 [email protected] 

但我不认为这将解决这个问题+1或-1,其实我看不到beetween一个关系,并加入命令!

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

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

是你想要吗?

+0

感谢您的帮助,这个例子帮助了很多! – 702cs