這種情況下的架構如下:檢索這些數據的最佳方法是什麼?
我有一個項目表和幾個表格的表格。物品不是擁有物品,而是物品擁有這些物品。這是因爲一個項目可以有多種形式(儘管每種類型只有一種,但不一定是)。表格和項目都通過共同的OrderId
連接在一起。這可以表示如下:
這對這些形式很有效。但是,還有另一種形式(比如FormX),它不能有OrderId
,因爲它由多個訂單中的項目組成。 OrderItems
也包含FormXId
的列,但我對獲取與單個OrderId
相關的「FormX」列表的最佳方式感到困惑。我正在使用MySQL,並且正在考慮可能存儲過程是繼續這個過程的最好方式,但我從來沒有在MySQL上使用存儲過程,也不知道最好的解決方法。我的其他(kludgy)選項是打兩次DB,首先得到給定的OrderId
也有FormXId
的所有項目,然後獲得所有的FormXId
,並做一個動態的SELECT
聲明,我做了類似僞代碼)
SELECT whatever FROM sometable WHERE FormXId=x OR FormXId=y....
顯然這是不太理想,但我真的不能相信任何其他方式......什麼都好,我可以做編程或建築?我的後端代碼是ASP.NET。
非常感謝!
UPDATE
爲了應對更多的信息請求:
樣品輸入:
OrderId = 1000
樣本輸出
FormXs:
-----------------
FormXId | FieldA | FieldB | etc
-------------------------------
1003 | value | value | ...
1020 | ... .. ..
1234 | .. . .. . . ...
你看到的問題是,FormX沒有一個單一的OrderId
,而是OrderId
的集合。有時,來自同一訂單的多個項目在FormX上,有時只有一個,大多數訂單在FormX上沒有任何項目。但是當有人拉起他們的訂單時,我需要他們的物品所屬的所有FormX來顯示,以便他們可以被修改/查看。
我正在考慮創建一個存儲過程,它可以完成我上面所說的操作,運行一個查詢來取消所有相關的OrderId
,然後再返回相應的FormX。但必須有更好的方法...
@omg小馬 - 我更新了我的問題... PLZ告訴我,如果你需要更多。謝謝! :) – Jason 2010-03-02 03:47:17