2016-03-29 61 views
0

我有一個查詢與此計數的情況下,我用來透視一些基於案例的總計。這是查詢:mysql主軸動態表,並返回只有在計數> 0

$user_attrib = some_value; 
$user_size = some_value; 
$items = [218, 219]; 
$items = join(",", $items); 


SELECT owned_items.model_id, 
     Count(owned_items.model_size_id) AS total_owned, 
     makes.make, 
     items.model_name, 
     items.picture, 
     items.color, 
     items.material, 
     Count(CASE item_sizes.id WHEN '1' THEN item_sizes.id ELSE NULL END) AS '1', 
     Count(CASE item_sizes.id WHEN '2' THEN item_sizes.id ELSE NULL END) AS '2', 
     Count(CASE item_sizes.id WHEN '3' THEN item_sizes.id ELSE NULL END) AS '3', 
     Count(CASE item_sizes.id WHEN '4' THEN item_sizes.id ELSE NULL END) AS '4', 
     Count(CASE item_sizes.id WHEN '5' THEN item_sizes.id ELSE NULL END) AS '5', 
     Count(CASE item_sizes.id WHEN '6' THEN item_sizes.id ELSE NULL END) AS '6', 
     Count(CASE item_sizes.id WHEN '7' THEN item_sizes.id ELSE NULL END) AS '7', 
     Count(CASE item_sizes.id WHEN '8' THEN item_sizes.id ELSE NULL END) AS '8', 
     Count(CASE item_sizes.id WHEN '9' THEN item_sizes.id ELSE NULL END) AS '9', 
     Count(CASE item_sizes.id WHEN '10' THEN item_sizes.id ELSE NULL END) AS '10', 
     Count(CASE item_sizes.id WHEN '11' THEN item_sizes.id ELSE NULL END) AS '11', 
     Count(CASE item_sizes.id WHEN '12' THEN item_sizes.id ELSE NULL END) AS '12', 
     Count(CASE item_sizes.id WHEN '13' THEN item_sizes.id ELSE NULL END) AS '13', 
     Count(CASE item_sizes.id WHEN '14' THEN item_sizes.id ELSE NULL END) AS '14', 
     Count(CASE item_sizes.id WHEN '15' THEN item_sizes.id ELSE NULL END) AS '15' 
FROM owned_items 
     INNER JOIN owned_item_user 
       ON owned_items.id = owned_item_user.owned_item_id 
     INNER JOIN users 
       ON owned_item_user.user_id = users.id 
     INNER JOIN item_sizes 
       ON owned_items.model_size_id = item_sizes.id 
     INNER JOIN items 
       ON owned_items.model_id = items.id 
     INNER JOIN makes 
       ON owned_items.make_id = makes.id  
WHERE users.attrib_id = $user_attrib 
     AND users.size_id = $user_size 
     AND owned_items.model_id IN ($items) 
GROUP BY owned_items.model_id 

我想概括的數據,因此,如果我加16號來說,我並不需要手動添加另一條線,我想只返回有結果>例0. 對於第一部分,我嘗試用這個pivot dynamic tables代碼調整沒有成功。第二部分我試圖設置HAVING Count(CASE item_sizes.id WHEN '1' THEN item_sizes.id ELSE NULL END) AS '1' > 0(etc ..)也沒有成功。

+0

當你說'只返回有結果的情況下> 0'你指的是整行?還是你指的是專欄? PS。整個查詢實際上是相關的,如果你有連接/外部連接 – JamieD77

+0

我只想獲得數據> 0的樞軸列('1','2. ...'n')。我會發布整個查詢。 – Chriz74

+0

我把完整的查詢 – Chriz74

回答

0

您可以使用組通過+計數

Select item_sizes.id, count(*) from item_sizes where item_sizes.id between 1 and 15 group by item_sizes.id; 
+0

...我旋轉數據,創建數據庫中不存在的列('1','2,...,'15') – Chriz74