SQLite 4 at DB
[2ch|▼Menu]
688:644
07/02/16 15:29:38
now sql----
foreach(画像群)
{
 SELECT R, G, B FROM lumtbl WHERE image==%1;

 SELECT idxscore.*, lum.R, lum.G, lum.B
 FROM
  (SELECT image, Sum(score) AS totalscore
   FROM tbl
   WHERE EXISTS
    (SELECT point
    FROM tbl
    WHERE image == %1)
   AND image != %1
   GROUP BY image) AS idxscore INNER JOIN lumtbl lum
                 ON idxscore.image = lum.image;
}

自助努力しました。
tbl に、下処理した score 列を追加しました。
sql 発行回数を減らそうという方針です。

URLリンク(www.geocities.jp)
とか、見ました。

650 sql---

SELECT hoge.Aimg, hoge.Bimg, hoge.idxscore, Alum.R, Alum.G, Alum.B, Blum.R, Blum.G, Blum.B
FROM
 (
  SELECT a.image AS Aimg, b.image AS Bimg, sum(b.score) AS idxscore
  FROM tbl AS a, tbl AS b
  WHERE a.point == b.point AND a.image != b.image
  GROUP BY Aimg, Bimg
 ) AS hoge INNER JOIN lumtbl Alum ON hoge.Aimg == Alum.image
      INNER JOIN lumtbl Blum ON hoge.Bimg == Blum.image;

いちど全順列の表を作ってから絞ってる感じでしょうか?

675 sql----
SELECT hoge.Aimg, hoge.Bimg, hoge.idxscore, Alum.R, Alum.G, Alum.B, Blum.R, Blum.G, Blum.B
FROM
 (
  SELECT a.image AS Aimg, b.image AS Bimg, sum(b.score) AS idxscore
  FROM tbl AS a INNER JOIN tbl AS b
          ON (a.point == b.point AND a.image != b.image)
  GROUP BY Aimg, Bimg
 ) AS hoge INNER JOIN lumtbl Alum ON hoge.Aimg == Alum.image
      INNER JOIN lumtbl Blum ON hoge.Bimg == Blum.image;

() の中身を675のとおりに入れ替えただけです。
こんな JOIN の書き方があるとは知らず、参考になりました。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4444日前に更新/190 KB
担当:undef