1

まず第一に、mysql変数が私のシステムで機能しておらず、その理由がわかりません。また、構成の問題である場合は修正を試みることができないため、問題を解決するための別の方法を試してみたいと思います。それらを使用します。

私が持っているとしましょう:

Table A
id - auto_increment
job_id - integer
other columns

Table B
date - timestamp
event - integer
A_id - integer (with table A id)

基本的に、1つの特定のjob_idに対してテーブルAのすべての行/列を選択したいのですが、テーブルBからの最新のイベントを含むすべての行にもう1つの列が必要です。

別のシステムで変数を使用してこのようなことを行ったことがありますが、変数を使用しないとすべての試行が失敗します。

ヒントを事前に感謝します。

PS:これは私の質問ではありませんが、誰かが変数に関する私の問題について興味を持った場合は...

私の問題を解決しようとして長い間間違った結果を得た後、私はこれをしました:

select if(@p, @p:=@p+1, @p:=1) as cnt, t.any_column from any_table t

そして私のcnt列は常に1に等しいです。たぶん私は疲れています....または問題のある変数..私が賭けなければならなかった場合、私は最初のオプションを選択します。

4

1 に答える 1

1

この背後にある考え方は、subqueryusingMAX関数で最近の日付を取得し、それをtableAとtableBに結合することです。これを試して、

SELECT  a.*, c.*
FROM    TableA a
        INNER JOIN
        (
            SELECT A_ID, MAX(`DATE`) recentDate
            FROM    TableB
            GROUP BY A_ID
        ) b ON a.ID = b.A_ID
        INNER JOIN TableB c
            ON  b.A_ID = c.A_ID AND
                b.recentDate = c.`DATE`
于 2012-10-11T01:12:07.037 に答える