モバマス 相場・トレード履歴 2018

ユーザーSQLについて

SQLとはデータベースを扱う為の言語です。
このページでは、ユーザーがSQLを入力することで、直接当サイトのデータベースにアクセスし、求めるデータ・集計結果を取得できます。
SQL実行フォームは当ページの最下部にあります。

登録SQL一覧

登録SQL一覧では私(管理者)やユーザーが過去に作製したSQLの結果を閲覧できます。
スタエナ比の高いカード一覧やトレード件数ランキングなどがあります。

説明・仕様など

◆データベースはsqlite3です。SQL文の書き方については入門サイト等を御覧ください。
◆セキュリティ上の理由及び仕様上の都合により、以下の禁止ワードと制限ワードを設定しています。
★禁止ワードCREATE, DELETE, UPDATE, INSERT, ALTER, RENAME, ADD, DROP, ;(セミコロン)
★制限ワードLIMITサブクエリ内でのみ使用可

◆入力したSQL文の末尾に自動で" LIMIT 1000 OFFSET :offset;"を付加し、1000件毎にページ分割します。
◆実行時間が10秒を超えるような重いSQLは実行できません。

◆「cardId」や「AS "カードID"」として取得したデータには自動的に内部リンクを付加します。
◆「attribute」や「AS "属性"」、「rarity」や「AS "レア度"」として取得したデータは自動で数値→文字に変換します(例:rarity: 「3」→「R+」)。

独自関数、名前付きプレースホルダ (formから送信した値を代入できる変数)が使えます!  NEW! 

◆テーブル情報: (テーブルスキーマ・インデックス

cards : カードテーブル
cardId INTEGER カードID 公式と同じ
cardName TEXT カード名 カードを特定できる最小限の名前。
進展度は含むが、レア度は含まない。例)[ハイカラサクラ]双葉杏+
girlId INTEGER ガールID テーブル結合用(girlsテーブル参照)
rarity INTEGER レア度
N N+ R R+ SR SR+
0 1 2 3 4 5
数値で管理。
不明は「-1」
cost INTEGER コスト 不明は「0」
maxAtk INTEGER Max攻 MMおよびMMMの値。不明は「0」
maxDef INTEGER Max守 MMおよびMMMの値。不明は「0」
hash TEXT ハッシュ値 公式リンク用
posted_at TIMESTAMP データ追加日時 初登場ではなく、当DBへデータを追加した日時
girls : アイドルテーブル
girlId INTEGER ガールID テーブル結合用
girlName TEXT ガール名 アイドル名。例)双葉杏
attribute INTEGER 属性
Cool Cute Passion
0 1 2
数値で管理。
不明は「-1」
posted_at TIMESTAMP データ追加日時 当DBへデータを追加した日時
tradeHistory : トレード履歴テーブル
key INTEGER キー サロゲートキー。自動インクリメント
cardId INTEGER カードID 公式と同じ
sold_at TIMESTAMP 売却日 トレード日時
seller TEXT 売却者 トレード受け渡し側ユーザー名
buyer TEXT 購入者 トレード受け取り側ユーザー名
stadori INTEGER スタドリ トレード内容
enadori INTEGER エナドリ トレード内容
maney INTEGER マニー トレード内容
card1 TEXT カード1 トレード内容(カード名)
(cardIdじゃない、「鍵付きクローゼット」もここに...仕様です)
card2 TEXT カード2 トレード内容(カード名)
card3 TEXT カード3 トレード内容(カード名)
card4 TEXT カード4 トレード内容(カード名)
card5 TEXT カード5 トレード内容(カード名)
posted_at TIMESTAMP データ追加日 当DBへデータを追加した日時
intervals : BOT用テーブル
cardId INTEGER カードID 公式と同じ
interval INTEGER 更新間隔 最新トレード履歴10件の
1件目と10件目のトレード日時の差(秒)
update_at TIMESTAMP 更新日時 最終トレード履歴巡回日時。
データが無くても巡回したら更新日時を更新する。
next_at TIMESTAMP 次回巡回予定日時 更新日時 + (更新間隔 / 補正値)

独自関数

PDO::sqliteCreateFunctionを利用して実装しています。

getCardTitle(cardName)

引数にカード名を渡すことで、カードの称号を取得できます。
称号が無い場合は空文字を返します。
例)「getCardTitle("[ノーアイドル・ノーライフ]双葉杏+")」で 「ノーアイドル・ノーライフ」が取得できます。

getCardImage(cardId)

引数にカードIDを渡すことで、カードの画像を取得できます。
画像は遅延ロード(その場所までスクロールされた時に読み込み)されます。
例)getCardImage(1529502)

<a href="/trade-history-1529502.html">
<img src="/card-img-thumb/noimg.jpg" data-original="/card-img-thumb/thumb-1529502.jpg" width="100px" class="lazy">
</a>

を返します。

名前付きプレースホルダ

SQL文に名前付きプレースホルダ(コロン「:」から始まる変数)を利用し、コメント欄でformを作ることで、
formから送信した値をプレースホルダにバインド(代入)できます。
デフォルト値はコメント欄にJSON形式で記述します。

例)SQL文に
SELECT c.cardName FROM cards c WHERE c.cost >= :cost
と入れSQLを1度実行後、コメント欄に

<form id="binds">
<input name="cost" type="number">
<button type="submit">検索</button>
</form>
<!-- {"cost": 10} -->

と設定することで指定コスト以上のカードを検索できます。

formのidbindsとし、input等のnameプレースホルダの名前と同じにして下さい。
(※プレースホルダの名前は 「offset」 「ctrl」 「page」 「maxPage」 「id」 「posterId」 以外にして下さい。
また、<!-- -->の中にJSON形式デフォルト値を指定できます。
(複数のプレースホルダを利用する場合は、 <-- {"cost": 22, rarity: 5, name="杏"} --> のようにして下さい。長くなる場合は複数行に跨っても問題ありません。)

コメント欄の改行は自動で<br>に置換されますが、行末に「¥」を記述することで自動改行を抑制できます。

SQL 実行フォーム

SQL文を以下に入力して下さい(後で変更できます)


外部リンク ★ おすすめ SQLite講座