-1

度重なる質問でしたらご容赦ください。こことグーグルで検索してみましたが、欲しいものを正確に見つけることができませんでした。

2 つのテーブル A と B があります。
テーブル A のフィールド: ID、名前、説明、評価。
テーブル B フィールド: id、aId (テーブル A にリンク)、customerId、推奨。

テーブル A には、ユーザーから提供された平均累積評価を保存しているデータ項目が含まれています。テーブル B には、テーブル A のデータの別の属性が格納されます。これには、推奨ビット (推奨の場合は 1、非推奨の場合は 0) が格納されます。

テーブル A のすべてのデータを一覧表示したいのですが、テーブル B の推奨ビットを使用してそれらを並べ替えたいと考えています。したがって、テーブル A に 10 レコード、テーブル B に 2 レコードがある場合、それらの 10 レコードすべてを一覧表示しているときに、それらの 2 つからテーブル B が最初に表示され、次にテーブル A の他の値が表示されます。推奨されるビット値が 0 であるか 1 であるかは問題ではありません。テーブル A から他の 8 つのレコードをリストしながら、それらの評価に基づいてレコードをリストしたいと考えています。降順で。

Androidアプリ用のこのsqliteクエリを書く際に誰かが私を案内してくれますか? 前もって感謝します!

4

1 に答える 1

2

左結合は、recommendedフィールドを結果セットに追加します (NULL一致するレコードがない場合は値が になりますB)。式recommended IS NULLorEXISTS(...)は、0 または 1 を返します。

SELECT DISTINCT A.*
FROM A LEFT JOIN B ON A.id = B.aId
ORDER BY B.recommended IS NULL,
         A.rating DESC

または:

SELECT *
FROM A
ORDER BY NOT EXISTS (SELECT 1
                     FROM B
                     WHERE B.aId = A.id),
         rating DESC
于 2013-08-25T08:53:29.160 に答える