2012-03-29 145 views
0

你可以傳遞變量到子查詢中嗎?sql子查詢,傳遞一個變量

SELECT users.id AS id, 
(SELECT SUM(total) FROM (image_totals) WHERE `cat_id` IN ('5', '3') AND `user_id` =id) AS image_count 

這是一個大的查詢中的一部分,所有正在通過活動記錄產生,但關鍵的問題仍然存在,「ID」變量,我怎麼可以通過這個進我的子查詢?我看着這一切都錯了嗎?

在此先感謝。如果您需要更多信息,請告訴我。

回答

1

使用GROUP BY。您希望爲每個user.id的SUM(總計)提供cat_id的特定值。我不知道你的查詢其餘的樣子,但表現出什麼,你可以:

SELECT 
     users.id AS id, 
     SUM(total) 
FROM image_totals 
WHERE cat_id IN ('5', '3') 
GROUP BY users.id 
1

nope,這是不可能的,它將不得不以不同的方式實施。

選擇必須從一個一致的數據集中進行選擇。

您的數據集可能包含複雜的查詢。

+0

感謝您的回答。我也這麼想。接近這個的正確方法是什麼?加入JOIN? – 2012-03-29 21:36:44

3

如果我理解正確你的問題,然後是你可以。

如果這些表不包含相同的列,那麼您不需要每個列的表名稱。我更喜歡包含表格名稱,因爲它更容易理解。

SELECT users.id AS id , 
     (SELECT SUM(image_totals.total) 
     FROM image_totals 
     WHERE image_totals.cat_id IN ('5', '3') AND 
       image_totals.user_id = users.id) AS image_count 
FROM users 

您還可以使用別名'來使表格更易於輸入。 u =用戶和我= image_totals。

SELECT u.id AS id , 
     (SELECT SUM(i.total) 
     FROM image_totals AS i 
     WHERE i.cat_id IN ('5', '3') AND 
       i.user_id = u.id) AS image_count 
FROM users AS u