2012-04-27 16 views
3

を使用して1つの結果に数えた結果、複数のテーブルを結合したいが、私はあなたがあれば、このことについて混乱しています任意のクエリを持っているか、これに関する方法を最適化私に答えたり、助けてくださいは間違いなく私が試みたにも感謝している私自身がこの連合とクエリ真剣ない成功(クエリ例を参照)は私が賢明<strong>のMySQL</strong>を(<em>が結果が</em>を必要参照)を使用して、私は列を持つつの結果に数えた結果、複数のテーブルを結合するMySQL

結果は

を必要と上記のコード@postで
post post_comment_likes post_comments post_likes 
2  0     3    0 

クエリ

SELECT COUNT(*) AS `post` FROM post WHERE user_id = "123456" UNION 
SELECT COUNT(*) AS `post_comment_likes` FROM post_comment_likes WHERE user_id = "123456" UNION 
SELECT COUNT(*) AS `post_comments` FROM post_comments WHERE user_id = "123456" UNION 
SELECT COUNT(*) AS `post_likes` FROM post_likes WHERE user_id = "123456" 

答えて

1
set @post = 0; 
set @post_comment_likes = 0; 
set @post_comments = 0; 
Set @post_likes = 0; 


select count(*) into @post from .......; 
select count(*) into @post_comment_likes from ......; 
select count(*) into @post_comments from ......; 
select count(*) into @post_likes from ......; 

select (@post + @post_comment_likes + @post_comments + @post_likes) ; 

、@post_comment_likes、@post_comments、@post_likesがセッション変数です、あなたがそれらを接頭辞 '@' 文字
上記のコードを使用して各テーブルのカウントにアクセスできます。

0
SELECT (SELECT COUNT(*) 
      FROM post 
     WHERE user_id = "123456") AS `post` 
     ,(SELECT COUNT(*) 
      FROM post_comment_likes 
     WHERE user_id = "123456") AS `post_comment_likes` 
     ,(SELECT COUNT(*) 
      FROM post_comments 
     WHERE user_id = "123456") AS `post_comments` 
     ,(SELECT COUNT(*) 
      FROM post_likes 
     WHERE user_id = "123456") AS `post_likes` 

あなたはCOUNT(<some fieldname>)COUNT(*)を置き換える必要がありますし、ユーザーIDの変数を使用することができます。

0

SELECT 
(SELECT COUNT(*) AS `post` FROM post WHERE user_id = "123456") AS post , 
(SELECT COUNT(*) AS `post_comment_likes` FROM post_comment_likes WHERE user_id ="123456") AS post_comment_likes, 
(SELECT COUNT(*) AS `post_comments` FROM post_comments WHERE user_id = "123456") AS post_comments , 
(SELECT COUNT(*) AS `post_likes` FROM post_likes WHERE user_id = "123456") AS post_likes 

おかげ

下記mysqlのクエリを試してみてください
関連する問題