2017-01-31 10 views
1

私が取り組んでいるデータベースには、まったく同じ構造の異なる都市の14のニューステーブル(table1、table2 .... table14)があります。 id、author、date、news_title、news_body複数のテーブルからクエリを取得するにはどうすればよいですか?

関連する市のテーブルに投稿する著者はそれぞれ異なります。今、どの著者が今日どのように多くのニュースを全14のテーブルに掲載しているのかを知りたい。ここで

は、出力の形式です:

author | num_of_post 
bob   5 
peter  12 

@Grodonが既にあなたがこのように労働組合を使用することができます述べたように14個のテーブル(これは問題です)

+4

あなたは 'union all'を使うことができますが、少なくとも悪いデータベース設計について何か学んだことがあります。 –

+1

JOINSを使用します。このスキーマは非常にひどくbtw設計されています。 https://www.sitepoint.com/understanding-sql-joins-mysql-database/ –

+1

MySQLにはビューがありますか?それと同等か?その場合は、14個のテーブルすべてを含むビューを作成します( 'Union'または' full join'sを使用します)。ビューに対してクエリを実行します。しかし、なぜこのデータは 'city'という名前の列を持つものだけではなく、14個のテーブルに分散しているのですか?それは本質的に間違っているわけではありませんが、それを行うにはいくつかの理由があります。 –

答えて

1

があり、覚えておいてください:

select author, count(id) as num_of_post from table1 group by author 
union 
select author, count(id) as num_of_post from table2 group by author 
union 
select author, count(id) as num_of_post from table3 group by author 


そしてそう

更新:

複数のテーブルに1人の作成者のレコードがあるため、再度結合結果をグループ化できます。

select author, sum(num_of_post) from (
select author, count(id) as num_of_post from table1 group by author 
union 
select author, count(id) as num_of_post from table2 group by author 
union 
select author, count(id) as num_of_post from table3 group by author) a group by author 
+0

しかし、それは同じ著者の2つ以上の行を与える: 著者| num_of_post ボブ5 ボブ2 ピーター3 –

+0

あなたには、いくつかのダミーデータを追加することができれば、私は正確なクエリを書くことができますが、あなたのコメントによると、私は今、1本の著者は、すべての著者が全てで投稿することができますはい – davejal

+0

複数のテーブル内のレコードを持つことができることを理解しますしたがって、同じ著者の結果を何度も与えています。私はすべてのテーブルのすべての著者による投稿の総数を知りたい。 author1がtable1に1ポスト、table2に5ポスト、他のすべてのテーブルに0ポストを投稿し、author1のポストの総数が6 –

関連する問題