我正在處理一個小項目,涉及抓取每個組存儲的聯繫人列表。基本上,數據庫的設置使每個組都有一個主要和次要聯繫人存儲爲Group.Primary和Group.Secondary。目標是爲每個組拉取每個主要和次要聯繫人並將其顯示在可排序的表中。MySQL查詢哪裏列像列
我有排序表都解決了,但我已經遇到了一個小問題。每個主要和輔助字段可以有多個聯繫人,並用逗號分隔。舉例來說,如果主要包含123256,那就需要拉兩個觸點與編號123和256。我本來打算使用格式化這樣的查詢:
SELECT *
FROM Group G,
Contacts C
WHERE G.Primary LIKE %C.ID%
OR G.Secondary LIKE %C.ID%
,這樣我可以只跳過逗號的一部分,但我似乎無法找到一個工作查詢。
我對你的問題是,我只是忽視的東西嗎?有沒有簡單的查詢可以讓我這樣做?或者,我最好分開獲得團隊和聯繫人,然後再將兩者結合起來。我認爲前者在閱讀時容易理解,這是一個加分,因爲這是一個共享項目,但如果這是不可能的,我會做後者。
這段代碼被簡化了,但它得到了重點。
你在數據庫中有一對多的關係。一個組有一個或多個聯繫人。大多數人通過添加一個包含groupid和contact id組合的額外表格來解決這個問題。通過這種方式,您可以使用常規聯接來獲取與該組關聯的所有聯繫人。增加的好處是它比每次用逗號分隔值「解析」字符串要快得多。 – Gerben 2011-01-12 18:47:39
不幸的是,這是一個遺留數據庫,太多的系統依靠它來改變結構,所以它必須保持原樣。我會在這裏嘗試解決方案,看看我能做些什麼。 – shmeeps 2011-01-12 19:35:17