人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpMyadminを使用して、スマホゲームのアカウント登録日から最終ログイン日までの差分日数が30日以上のユーザーが保持している無料通貨の総量を合計表示するという課題を出されているのですが、正直php自体を人生で初めて使っているのでここまで応用できません。
SELECT DATEDIFF 'create', 'lastlogin' FROM master
WHERE 差分? BETWEEN 30 and 1000
sum (通貨列)?

すいません全然わからないです。
どなたか教えていただけないでしょうか?

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

まず、課題には PHP は関係なく、SQL の課題です。phpMyAdmin は PHP というプログラミング言語で記述された、MySQL を管理するためのミドルウェアのことです。phpMyAdmin 自体が扱うのは SQL という言語です。

また、SQL の質問をする際には、必要なすべてのテーブル定義も合わせて記述する必要があります。そうでなければ SQL を記述することができません。

前置きはさておき、以下のテーブル定義があったと仮定します。

```sql
/**
* なぜ master という名前なのか? ユーザーアカウントを管理する目的のテーブルは、
* account か user という名前が一般的に利用されます。
*/
CREATE TABLE master(
`id` INTEGER UNSIGNED AUTO_INCREMENT,
`create` DATETIME NOT NULL,
`lastlogin` DATETIME NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB;

/**
* 「無料通貨」を表すテーブルです。
* web で調べてなお、無料通貨という日本語が理解できませんでしたが、
* おそらく無料で入手した仮想通貨を意味しているのでしょうか。
*/
CREATE TABLE money(
`id` INTEGER UNSIGNED AUTO_INCREMENT,
`master_id` INTEGER UNSIGNED NOT NULL,
`amount` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB;
```

このテーブルに対して「アカウント登録日から最終ログイン日までの差分日数が30日以上のユーザーが保持している無料通貨の総量を合計表示する」 SQL は以下のようになります。

```sql
MariaDB [hatena]> INSERT INTO master(`create`, `lastlogin`) VALUES('2017-06-20 00:00:00', '2017-09-01 00:00:00'), ('2015-02-10 00:00:00'
, '2032-01-01 00:00:00');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

MariaDB [hatena]> INSERT INTO money(`master_id`, `amount`) VALUES(1, 3), (2, 10);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

MariaDB [hatena]> SELECT SUM(amount) as total FROM master INNER JOIN money ON master.id = money.master_id WHERE DATEDIFF(`lastlogin`, `c
reate`) >= 30;
+-------+
| total |
+-------+
| 13 |
+-------+
1 row in set (0.00 sec)
```


匿名回答1号さんのコメント
SQL は表(テーブル)の関係を宣言的に記述するための言語で、データを集合として扱っているという認識が本質的に重要です。 表の結合については http://qiita.com/devopsCoordinator/items/3ba154429973a4ddc9e0 例えばこの URL を見てベン図でイメージを掴むと分かりやすいと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ