SQLite 4
at DB
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