素人によるSQLパズルゲーム

2015/1/31 [12:49:15] (土) 天気

ここにあるのは素人芸なのできちんと調べるなら

「図でイメージするOracle DatabaseのSQL全集」

http://www.oracle.com/technetwork/jp/articles/otnj-sql-image1-308625-ja.html

をオススメ。


以下は、このORACLEのページを元ネタにして雑記帖のカテゴリをいじくった時のメモ。

(具体的にデータベースの構造を晒すのはセキュリティ的に問題があるような気がするので端折った)


「カテゴリを元に雑記帖の記事をリストアップしたい」


・雑記単位で一意のIDがある

・雑記に紐付くカテゴリがゼロ以上複数個ある


雑記ID本文など雑記内容詳細

という雑記帖詳細テーブル


カテゴリIDカテゴリ内容詳細

というカテゴリ詳細テーブル


このふたつを繋ぐために

雑記IDカテゴリID

という雑記とカテゴリを紐付けるテーブルがある。各々のIDから詳細テーブルがわかるので内容を引っ張りだせる。


「電子書籍」というカテゴリがついた雑記を引っ張りだすには、雑記IDで雑記カテゴリを繋ぐ。inner join、内部結合というやつ。


select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID=電子書籍ID

でシンプルにあっさり。



複数のカテゴリから雑記を引っ張りだすのが少し面倒くさい。


その1 和集合

image

A「電子書籍」か、B「kindle」のどちらかのカテゴリのついた雑記を引っ張りだすには


select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID in (電子書籍ID,kindleID)

これでカテゴリに「電子書籍」か「kindle」がついた雑記を引っ張りだせるけど、両方ともついた雑記が2回出てくる。

雑記1電子書籍
雑記2kindle
雑記3電子書籍
雑記3kindle

雑記3のケース。

IDが重複していると、同じ雑記を表示することになってしまうので、重複IDをひとつにするために distinct を使う。


select distinct(雑記ID) from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID in (電子書籍ID,kindleID)



その2 積集合

image

A「電子書籍」とB「kindle」、両方のカテゴリがついた雑記を引っ張りだすには intersect を使ってふたつの検索結果であるテーブルの積集合をとることになるらしい。


select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID=電子書籍ID
intersect
select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID=kindleID

1行目のselect文で電子書籍IDのついた雑記を引っ張りだし、3行目のselect文でkindleIDのついた雑記を引っ張りだす。

intersect が、ふたつから共通する雑記IDだけを引っ張りだしている。


この引っ張りだした結果を select で括って条件でフィルタしたり順番に並べたりする。


select * from (
  select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID=電子書籍ID
  intersect
  select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID=kindleID
)
where文 order by 並び順 limit 個数 offset どこから



積集合じゃないけど、両方のカテゴリがついた雑記を引っ張りだすもうひとつのやり方。

ひとつの雑記に「電子書籍」「電子書籍」などとカテゴリは重複しない。ということを前提にすると。


select 雑記ID from 雑記帖詳細 inner join 雑記カテゴリ  ON 雑記ID=雑記カテゴリの雑記ID AND 雑記カテゴリのカテゴリID in (電子書籍ID,kindleID)
  group by 雑記ID having count(雑記ID) = 2

というのもありかも知れない。

・カテゴリに「電子書籍」か「kindle」がついた雑記を引っ張りだす

・雑記IDごとにグループ化=集計する

・集計結果が「2」であればカテゴリがふたつともある

最初はこっちで実装してみた。


intersectを使ってtableをふたつ結合するのは処理が重い=遅いんじゃないかと思ったんだけど、計測してみたら全然差がなかった…たかだか(現状)2700程度の数だし。

それなら、カテゴリの重複はない、などと前提条件がつくよりは素直にテーブルを結合させた方が安心安全、かな。



http://t2aki.doncha.net/index.pl?cat=5%2C43

↑カテゴリをコンマで繋いで複数カテゴリのリストアップ。

これは「日野裕太郎」と「doncha.net」の組み合わせ。


日野裕太郎は紙本(商業・同人)があるし、ウチ以外からの電子書籍もあるので細かいコンロールをしたかったんだよなあ。


いろんな場面でカテゴリの組合せが使えるのがスゲーありがたい(自画自賛芸)



perl にしろ SQL にしろ、ネットの情報・紙の解説本が豊富なので、わたしのような素人なら素人なりにレベルに応じて使えるので本当に助かります。

[更新]2026-02-01 09:38:22

Kindle KDPでTINはもう不要

2015/1/31 [09:15:18] (土) 天気

昨日twitterで見たんだけど。

現在jpとmxとauとcaとinについては米国の30%源泉徴収を適用していないとのこと


そういえば、以前、KDPの管理ページで販売地域の選択がなかったような記憶。iTunesでは地域選択があって、価格を決めるので、KDPは価格設定が販売地域も決めるのか、と思った。今月、久しぶりに登録してみたら、販売地域の選択があったんでいつからあったっけ、と。


販売地域がjpだけの場合にはTINは不要になるのかも知れない。


元ネタはフォローしている漫画家さん・粟岳高弘(‏@AwatakeTakahiro)さんの一連のツイート

https://twitter.com/AwatakeTakahiro/status/561067604043767808

https://twitter.com/AwatakeTakahiro/status/561069629330567169


これが事実として公式に確認できたらビッグニュース(ご当人ももっと話題になってもいいのに、と)

個人がKDPに参入するのに一番のネックになってるのがこの税金処理。

電子書籍を作る環境は出揃っているので、このうっとーしー税金処理さえなくなれば参入する個人作家が増える・コンテンツが増えるのは間違いない。


「Kindleの電子書籍に消費税適用へ 2015年度から Googleの広告にも」

http://www.huffingtonpost.jp/2014/06/25/kindle-consumption-tax_n_5531962.html

あたりが関係してんのかな。



[2015/02/17 08:55:12]追記。


Amazon Kindle公式のヘルプ「米国以外の出版者の源泉徴収税」に

* 米国以外の Kindle ストアで得たロイヤリティについては、Amazon は米国の源泉徴収税の徴収を行いません。

https://kdp.amazon.co.jp/help?topicId=A1CTSIBPDAAJ0M

と明記されていた。

image


粟岳高弘(‏@AwatakeTakahiro)さんのツイート通り、日本で売る限りEINやITINを取得する必要はない、ということだな。


もちろん、米国で売れるとその分に関しては30%天引きされるんだろうけど、日本語で書かれた本が米国で大ヒットするとは思えないので面倒な減免の手続きをすることもない。



上記した電子書籍に消費税適用のほか、日米租税条約の改正が去年暮れだか今年あたりに発効とかも影響があったか。

「外務省:日米租税条約改正議定書の署名」

所得に対する租税に関する二重課税の回避及び脱税の防止のための日本国政府とアメリカ合衆国との間の条約を改正する議定書」

文字通り、二重課税防止のための条約ということなので、遵守しろよ、と厳しくなったんかねえ。

[更新]2026-02-01 09:45:54

KDPの価格設定、バーゲン?

2013/1/31 [21:02:04] (木) 天気

kindleストアにKDPで作品を並べる時に悩むのが価格設定。


現状ウチの場合は、紙印刷本の同人誌が最初にある。そちらを買ってくれた人のことを考えると、電子書籍だからといって極端に値段は下げない。

紙印刷本は本そのものを購入するのに対して、電子書籍は読む権利を購入する。てことで、ほぼ同じ値段か、8掛けぐらいの設定にしている。

是非はともかく、当面はこの方針。


kindleストアに並べてからも値段は自由に変えられる。

無料キャンペーンもあれば、値段はいつでも上げたり下げたりが可能。


考えかたなんだろうけど。ウチは一度つけた値段は動かさないで行く

(最初、値段設定がよくわからず、米アマ基準にしてたのを付け直したのが一度だけ)


やはり、値段を上下させるのは一度買ってくれた人に申し訳が立たない。電子書籍は原価頑張ったので還元します!なんてことのない種類のものだ。

売る側にも買う側にも、値段が上下することに納得感が薄い。


でも、無料キャンペーンは事前告知をしてやる。告知、読者に知ってもらうためにkindleストアで露出を増やすには今のところ、これしか思いつかない。


「売れないから・売りたいがために」という理由で値段はいじらない。

「作者作品を知ってもらいたい」という理由で無料キャンペーンはする。


などと、ちょっと方針を整理しておこう。


[更新]2026-02-02 07:51:17

電子書籍熱?

2010/1/31 [15:39:44] (日) 天気

アマゾンのkindleとか、appleのiPadが話題で、ついつい引きずり込まれるように、電子書籍についてネットをうろうろ。影響されやすい、軽くて薄い性格なもんですみません。

まったく別種類のものなので、比較するのはおかしい、と思いつつも、どっちかってーとkindleの方が面白そうだなぁ、と。でも、日本語フォントが難しいらしく、日本語版が出るのは当分先の話らしい。縦書きでそれなりにキレイな明朝系フォントじゃなきゃ読む気が起きない。そもそもゴチック体の小説なんてありえない。


てことで、ふたたびだか三たびだか四たびだか、zaurus sl-C860を引っ張り出した。手書き強化でモレスキンに切り替えてからほとんど出番もなく転がってたんだけど、電子書籍リーダーとしては、ブンコビューワーのパブリフォントというフォントがギリギリOK、かな。

夢枕獏、山田正紀、かんべむさし、結城昌治、ドストエフスキーあたりが購入済みの電子書籍で、他に青空文庫からいくつかダウンロード済み。久しぶりに「ザウルス文庫」改め「SpaceTownブックス」を覗いて、伊坂幸太郎の「魔王」を420円也で購入、ダウンロードしてみる。けっこうサクサクいける。

ただ、ここでも総数が25000冊程度。あちこちで言われることだけど、本屋をネットでやるなら、アマゾン並みの品揃えが必要。やる気あるのか、という冊数だよなあ。でも、ここにきて黒船騒動の様相で、出版社も電子書籍に目を向けてくれると読者としてはありがたいことになる、ことを祈ろう。


ついでに、いつの間にか動かなくなっていたCGIを捨てて、書き直し。サーバーやデスクトップは 5.8 環境なのに、zaurusは 5.6 だし、文字コードは euc という旧世界。Encode もないので Jcode でごまかしながら、手探りでスクリプトを書いて流し込む。どうにかふたたび使えそうなぐらいには格好がついた、かも。


kindleを使えば、同人さんなんか、アマゾンで本が売れることになるので、すごく期待したい。特に漫画は、ふきだしのネームなんかも画像にしちゃえばいいので、すぐにアマゾンの店頭に並べられるだろう。ついでにネームを英語にしちゃえば市場も一気に広がるし。手元に死んでる原稿があったらアマゾンに参戦しませう。

[更新]2026-02-04 09:08:49

グーグル祭り

2009/1/31 [23:55:30] (土) 天気

グーグルがヤバイことになってんなぁ。

image

検索結果すべてに「このサイトはコンピュータに損害を与える可能性があります。」というのが張りついてるじゃん。


これ、ECサイトは致命的。こんなもの見せられたら、誰もクリックせんよ。今日の売り上げは、グーグルさまのこの分だけ落ちる。でも、機会損失とかで損害賠償とかにはならないんだろうなあ。


[02/01 00:22:01]

を。直った、もよう。

やれやれ。これで、ロシアカメラのレンズの相場検索を続けられる(え!?)

[更新]2026-02-04 09:29:21

<<2026/01>>
    123
45678910
11121314151617
18192021222324
25262728293031

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: