2015-05-11 108 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