2

重複の可能性:
MySQL を使用した SQL クエリ

Java で Jersey を使用して REST Web サービス (JAX-RS) を実装しています。休止状態を使用して、MySQL データベースからデータをフェッチします。このクエリでは:

(Select distinct deliverable.id from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
                    .setMaxResults(3)
                    .setLong("id", projectId)
                    .setString("name", username)
                    .list();

[275,51,286] という正しい結果が得られました。これは、データベース内のすべての ID に提供されるキーです。

    id       key
---------------------
    275      2.0
    51       cm
    286      19.87

今、私はこのクエリを使用します(deliverable.idの代わりにdeliverable.keyを除いてすべて同じです):

(Select distinct deliverable.key from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
                    .setMaxResults(3)
                    .setLong("id", projectId)
                    .setString("name", username)
                    .list();

結果は ["2.0","19.88","19.99"] です。1つ目は正しいですが、2つ目と3つ目は全く別のキーです。

「エイリアス」またはその他の方法で解決できる場合があります。あなたの提案?

4

1 に答える 1

0

私は答えを見つけました:

("select d.key from Deliverable as d, Task as t
                where t.deliverable.id = d.id and
                t.id = (select max(t1.id) from Task t1 where t1.deliverable.id = d.id)
                and d.project.id= :id
                and t.user.username = :name
                order by t.id desc")
        .setMaxResults(3)
        .setLong("id", projectId)
        .setString("name", username)
        .list();
于 2012-07-13T18:44:31.310 に答える