2013-04-26 25 views
1

我不確定這是否可行,但我有一個名爲category的表。每個類別都分配給一個部門。所以我查詢我的數據庫得到一組類別MSSQL Group By Query - 使用結果執行下一個查詢

SELECT id_category FROM [db].[dbo].[category] 
WHERE (id_division = <<id_division_here>>) GROUP BY id_category 

我得到我期望的類別列表。現在,我需要確保在具有保存多個值的字段的另一個表稱爲內容存在這些類別 - 所以LIKE語句也適用於該...基本上

SELECT title FROM [db].[dbo].[content] 
WHERE (assigned_to LIKE '% <<id_category_here>> %') ORDER BY title 

我的問題是,有沒有我的方式來結合這兩個查詢還是需要分開完成?我可以將一個表中的結果分組並將其用作查詢另一個表的搜索條件嗎?感謝您幫助我弄清楚這一點。 :)

+0

如果id_category唯一標識某個類別的記錄,你不應該在你的第一個查詢需要GROUP BY id_category。另外,你能修改表格結構嗎?如果可能,將多個id_categories存儲在單個'assigned_to'字段中會違反第一個標準形式,並且應該規範化。 – 2013-04-26 12:53:49

回答

0

嘗試:

SELECT a.id_category, o.title 
FROM [db].[dbo].[category] a 
JOIN [db].[dbo].[content] o 
    ON o.assigned_to LIKE '%'+ a.id_category + '%' 
WHERE a.id_division = <<id_division_here>> 
0

可能這對你有所幫助 -

SELECT /*DISTINCT*/ c.title, t.id_category 
FROM dbo.content c 
CROSS JOIN (
    SELECT DISTINCT c.id_category 
    FROM dbo.category c 
    WHERE c.id_division = <id_division_here> 
) t 
WHERE c.assigned_to LIKE '%' + t.id_category + '%' 
ORDER BY c.title 
+0

這個工作完美 - 即使是在幾年後! :) – user1255154 2017-09-02 14:25:03

+0

它只比上面的代碼慢... – user1255154 2017-09-02 14:34:57