-3

2 つの関連するテーブルがあるとします。

Table1:
id item_id(References to Table2:id) rating

Table2:
id title day position

クエリを作成する必要があります: すべての Table2 アイテムについて、Table1:rating をチェックし、その位置 (ASC) を Table1:position に入れますが、特定の日のみです。毎日 - 新しい評価。1,2 ... 1000

Exmpl:
Table1:
id item_id rating
1  1       2
2  2       1555
3  3       280

以下を取得する必要があります。

Table2:
 id title day position
 1  test1 1   1
 2  test2 1   3
 3  test3 1   2
 N  ....  2   ...
4

1 に答える 1

1

これはどう?

SELECT  a.*, b.*
FROM    table2 a
        INNER JOIN table1 b
            ON a.id = b.item_id
WHERE   day BETWEEN day_1 AND day_2
ORDER   BY a.position ASC

これを試してみてください。

UPDATE  table2 e
        INNER JOIN
        (
            SELECT  c.*, 
                    @rank:=@rank+1 row_rank
            FROM
                    (
                        SELECT  a.*, b.*
                        FROM    table2 a
                                INNER JOIN table1 b
                                    ON a.id = b.item_id
                        WHERE   day BETWEEN day_1 AND day_2
                    ) c, (SELECT @rank:=0) d
            ORDER   BY c.rating ASC
        ) f ON e.ID = f.ID
SET     e.position = f.row_rank
于 2013-02-04T07:40:41.553 に答える