2014-10-06 97 views
0

我有一個名爲orders的表,其中我有一個帶有ids連接示例的列,這指的是多個產品id如何存儲示例:454,678並且如果我想選擇表格產品內部連接表訂單where products.id in (orders.productids)它只會列出一行,但如果我做同樣的選擇,並把where products.id in (454,678)然後它列出我的兩行。MySQL選擇連接值的位置

由於這些值已經連接起來以便能夠在IN條件下使用,那麼它應該工作在那裏它可以讀取兩個ID的連接?

+0

您的查詢現在是什麼樣的? – helllomatt 2014-10-06 17:46:28

+1

您在單個列中存儲多個id值的設計「看起來像是一場勝利」,但它引入了* performance *和* data integrity *的問題。我強烈建議您閱讀Bill Karwin的優秀着作「** SQL反模式:避免數據庫編程陷阱**」的第2章。 (是的,可以寫一個可以做你想要的查詢,但我認爲給你一個例子不是一個好主意,因爲這會促進你使用不好的設計。) – spencer7593 2014-10-06 18:49:14

回答

2

只是需要一些時間,並創建一個鏈接表有序PRODUCT_ID

orders_products

  • ORDER_ID(PK)
  • PRODUCT_ID(PK)
  • 賣方的價格

這有很多優點,例如,您可以使用索引進行連接

+1

+1正常化 – Drew 2014-10-06 17:54:31

+0

謝謝你對此有所顧慮,但我想避免這種情況,以避免在預訂過程中進行更多查詢,所以我試圖將所有內容放在一列中,是不是有辦法查詢? – user1361389 2014-10-06 18:03:07

+0

總有一種方法,但這不應該是遵循的方法。 – Gervs 2014-10-06 18:04:56