2011-12-12 64 views
1

解釋主標題有點複雜,但情況如下: - 我有2個表格: 用戶,首選項。定義爲來自2個表格之間的連接的結果?

遵循

用戶:

ID | NAME | FK_NODE_PREFERENCES 

首:

ID | FK_USERS | PREFERENCE_DESCRIPTION 

的想法是讓每個用戶喜好的很多...

結果應看起來如下:

USER | ALL_PREFERENCES 
  • 我需要的偏好字符串的一部分進行搜索,我需要只有1行插入結果選擇查詢,其中,具有所有相關加時賽用戶作爲文本到一個單一的記錄偏好?
+0

您是想通過提供的首選項片段過濾所有行,還是希望將所有行作爲一行返回? – websch01ar

+1

爲什麼你在用戶表和節點首選項之間交叉FK?在用戶FK_NODE_PREFERENCES和NodePreferences FK_USERS中?如果你需要無限到無限的工作,你可以使用交叉引用表。因爲NodePreferences與Preferences表一起工作 –

+0

我不知道如何解釋它 - 通常它應該是這樣的:如果用戶選擇了「RED」,「BLUE」,「WHITE」 - 它們都將保存到結果記錄ALL_PREFERENCECE中空格分隔爲一個字符串。 –

回答

1

我不熟悉Firebird,但它似乎有一個LIST()函數,它應該等同於MySQL中的GROUP_CONCAT()函數。 (http://www.firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html

所以,基本上查詢應該是這個樣子:

SELECT Users.name, LIST(Preferences.preference_description, ' ') AS ALL_PREFERENCES FROM Users JOIN NodePreferences ON Users.fk_node_preferences = Preferences.id WHERE Preferences.preference_description LIKE '%abc%' GROUP BY Users.name 

所以......不知道這是否實際工作,但方向應該是正確的...... 。希望幫助!

+0

不知何故,我不能讓生活的查詢:| –

+0

你能給我們提供你試過的查詢和firebird給你的錯誤消息嗎? – Vapire