• 締切済み

SQLのサブクエリについて

サブクエリについて質問です。MySQLで作成した以下の投稿(post)テーブルとコメント(comment)テーブルがあります。サブクエリを使用し、投稿テーブルのタイトルごとにcomment_dateが2017年04月13日から2017年04月19日の範囲内でコメントが何件あるかを取得するSQLはどのように記述できますか?

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.1

こんな感じでしょうか。 SELECT title, comment_count FROM post INNER JOIN ( SELECT post_id, count(*) AS comment_count FROM comment WHERE comment_date BETWEEN '2017-04-13' AND '2017-04-19' GROUP BY post_id ) AS comment ON post.id = comment.post_id

関連するQ&A

  • SQLの検索について

    SQLについて質問です。MySQLで作成した以下の投稿(post)テーブルとコメント(comment)テーブルがあります。サブクエリを使用し、投稿テーブルのタイトルごとにcomment_dateが2017年04月13日から2017年04月19日の範囲内でコメントが何件あるかを取得するSQLはどのように記述できますか?

  • サブクエリではかけるのですが、サブクエリを使わないとできません。

    sql文について困っているので質問させてください。 以下のデータがあるとします。 番号  月日   金額 ---------------------------- 1    0512   100 1    0411   200 1    0310   300 2    0609   400 2    0708   500 2    0411   600 3    0523   700 3    0322   800 このデータを番号でグループ化し、 月日が最大のときの金額を取得したいです。 つまり、クエリの実行結果を以下のようにしたいです。 番号  月日   金額 ---------------------------- 1    0512   100 2    0708   500 3    0523   700 この場合、サブクエリを使って書けばほしい結果が得られると思いますが、 mysqlのバージョンが4.0.22なのでサブクエリが使えません。 サブクエリを使わないで上記の結果を得ることはできるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL-Serverに対してサブクエリが使えない場合がある。

    現在VB5.0(Win98)でSQL Server7(WinNT)を使用しています。 下記のようなサブクエリを使用してSQLを実行しようとしています。 データコントロールのSQLプロパティに直接記述して実行すると、 うまく結果が得られるのですが、 モジュール内でDAOを使用してODBCデータソースに接続し、下記のSQLを実行すると 「入力テーブルまたは、サブクエリが見つかりません。」のようなエラーとなってしまいます。 データコントロールではサブクエリを使用してSQL Serverから結果を取得できるのに モジュール内でSQLを記述してサブクエリを含むSQLを実行するとエラーになってしまうのは 何故でしょうか? サブクエリをどこかで定義する必要などがあるのでしょうか? select new.K_SEID,new.K_HOKENKB,SUM(new.KINGAKU) from (select K_SEID,K_HOKENKB,K_SURYO * B_KAKAKU as KINGAKU from KONYU,BOOK where K_TAISYO = 1 and K_MSGID = B_MSGID and K_LINE = B_LINE) as new group by new.K_SEID,new.K_HOKENKB

  • サブクエリについて教えてください。

    すみませんが、教えてください。 下のようなテーブルhogeから、 各dateIDにつき、deliIDが最大の、priceを取得 しようとしています。 SELECT dateID, price FROM hoge ORDER BY deliID DESC を使って、同じdateIDをはじけば、実現できるのですが、 サブクエリを使うと、一発で実現できそうな気がするのですが、サブクエリを使ったことがないので、よくわかりません。 サブクエリで上記の抽出ができるのか? できるならば、そのSQLを教えてください。 テーブル:hoge dateID,deliID,price 1,1,1000 1,2,1500 1,3,1200 2,1,900 2,2,1100 2,3,2000 3,2,1800 3,3,1300 3,4,800 ...

  • 【再掲】SQL-Serverに対してサブクエリが使えない場合がある。

    現在VB5.0(Win98)でSQL Server7(WinNT)を使用しています。 下記のようなサブクエリを使用してSQLを実行しようとしています。 データコントロールのSQLプロパティに直接記述して実行すると、 うまく結果が得られるのですが、 モジュール内でDAOを使用してODBCデータソースに接続し、下記のSQLを実行すると 「入力テーブルまたは、サブクエリが見つかりません。」のようなエラーとなってしまいます。 データコントロールではサブクエリを使用してSQL Serverから結果を取得できるのに モジュール内でSQLを記述してサブクエリを含むSQLを実行するとエラーになってしまうのは 何故でしょうか? サブクエリをどこかで定義する必要などがあるのでしょうか? なお、接続はDAOです。ADOはVB5.0では使えないような気がします。 RDOでの接続はしていないので、どうなるのかはわかりません。 select new.K_SEID,new.K_HOKENKB,SUM(new.KINGAKU) from (select K_SEID,K_HOKENKB,K_SURYO * B_KAKAKU as KINGAKU from KONYU,BOOK where K_TAISYO = 1 and K_MSGID = B_MSGID and K_LINE = B_LINE) as new group by new.K_SEID,new.K_HOKENKB

  • サブクエリなしでSQL一発で取得できるでしょうか?

    MySQLは、4.0だとサブクエリが使えず困っています。 やりたいことは、 マスターテーブル 1 : n 更新履歴テーブルの関係で、 マスターテーブルのレコード一覧の中に、 更新履歴テーブルの最新の更新時刻だけを表示したい。 ・マスターテーブル(mt) Key1 ・・・・・dataN ・更新履歴テーブル(ut) Key1 ・・・・・update_date ■一覧イメージ mt.key1 mt.data1 mt.data2 mt.data3 ut.update_date

    • ベストアンサー
    • MySQL
  • 一つのSQLで実行できるでしょうか?

    sqliteで質問です。 今、以下のようなテーブル(table1)があったとします。 uid | date | comment 010 | 1211 | AAAAA 011 | 1211 | BBBBB 010 | 1220 | CCCCCC 011 | 1220 | DDDDDD このとき、1行目と4行目を取得や削除するようなSQLを一つで記述することは可能でしょうか? イメージてきには、 select * from table1 where {((uid = 010) and (date = 1211)), ((uid = 011) and (date = 1220))} みたいな感じにです。 つまり、where句の組み合わせを複数書いて一つのSQLで実行したいのです。 恐れ入りますが、よろしくお願いします。

  • SQL文のSyntaxエラー

    お世話になります。 以下のSQL文でSyntaxエラーが出てしまい、考えても考えてもエラーが出続けているので「どこでエラーが発生して、訂正したSQL文」をご教授いただければ幸いです。 $sql="insert into 'post' ("name","comment","created_at") values ('" . mysql_real_escape_string($name) . "','" . mysql_real_escape_string($comment) . "','" . date('Y-m-d H:i:s') . "')"; PHP内でのSQL文です。参考にしたのは技術評論社「パーフェクトPHP」p.190です。 以上、よろしくお願いします。

    • 締切済み
    • PHP
  • SQL サブクエリで抽出したカラムについて

    サブクエリで抽出したカラムを 本クエリでの結果と一緒に表示したいのですが どのように実現してよいかわからず困っております。 詳細としては、下記のようなことをしたいと考えております。 文中の1)と2)は文章下部にあるSQLを指しております ----------------------------------------------------------- 最初は、1)のように凄く単純なSQLでよかったのですが 仕様が変わり、TBL2で取得した新しいカラムも一緒に 本クエリでの結果として取得できれば、SQLを2回実行せずに済むなと考えたのですが、 2)のように色々と試行錯誤したのですが、実現できません。 (2)は単なる空想ですが…) そこで、わかる方にお伺いしたいのですが、 副問い合わせで取得した複数カラムの中の1つのカラム【2)でいうところのTBL2.X】 を 2)のように"select TBL1.A , TBL2.X"として、結果を得ることは可能でしょうか。 ただし、 TBL1のカラムAは、TBL2に存在しない TBL2のカラムXは、TBL1には存在しない カラムBは、TBL1、TBL2に存在する の条件となっております 環境はMysqlです テーブル結合の方法も考えたのですが、 TBL2で、日付でソートし、その上位100件だけを 持ってきたいと思ったので、副問い合わせで一気に抽出しようとこの方法を考えまし た お分かりになる方がいらっしゃいましたらよろしくお願いします 1)SQL ------------ select TBL1.A from TBL1 where TBL1.B in ( select TBL2.B from TBL2 where 条件 ) 2)想像SQL(こんな感じの事をしたい) -------------- select TBL1.A , TBL2.X from TBL1 where TBL1.B in ( select TBL2.B , TBL2.X from TBL2 where 条件 order by TBL2.日付 desc limit 100 )

    • ベストアンサー
    • MySQL
  • PHP+MySQLで複数配列の挿入(INSERT)

    こんにちは。PHPの初心者です。MySQLで一つの配列を読む方法はわかっていますが、複数の配列をテーブルに入れる方法がわかりません。どなたかわかる方がいらっしゃったら教えてください。 $sql01 = "INSERT INTO $table01 (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_karma, comment_approved, comment_agent, comment_type, comment_parent, user_id, comment_subscribe) VALUES ('1069','online post dated check cashing','Tim','Hello','221.120.211.2','2008-09-23 06:43:43','2008-09-23 14:43:43','Yay','0','spam','Hello','trackback','0','0','N')"; 以上のように$table01というテーブルに特定のデータを挿入することができます。データベースは$database_my_juliaです。もう既に$database_my_meggyというデータで以下のようにデータを$sqlに保持しています。このような複数の配列を上記のように他のデータベースのテーブルに挿入することはできるでしょうか? $sql = "select comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date comment_date_gmt, comment_content, comment_karma, comment_approved, comment_agent, comment_type, comment_parent, user_id, comment_subscribe from $table00 WHERE comment_approved != '1'"; $result_my_meggy = mysql_query($sql,$my_meggy); 宜しくお願いします。