私は複雑なクエリを作成しています。私はJOINでそれをやろうと考えていますが、どこから始めたらいいのか分かりません。できるだけ明確に私の問題を説明しようとします。SQLiteで複雑なクエリ
私は補償を扱うソフトウェアを作成しています。すべての補償は、チェーン内のような複数のリンクを持つことができます。基本的に各リンクは顧客です。
カスタマー
CustomerID | Name
報酬
CompensationID | CustomerID | Date
はリンク
LinkID | CompensationID | CustomerID | Sequential
は今、すべてのリンクを持つシーケンシャルフィールド増加が追加さ:だから、私はちょうどあなたのテーブル構造を教えてあげます。私はいくつかのデータを持つテーブルを充填することによって実証してみましょう:
CustomerID | Name
-----------+-----
0 | Foo
1 | Bar
2 | Baz
CompensationID | CustomerID | Date
---------------+------------+------
0 | 0 | 2-2-2010
1 | 1 | 2-3-2010
LinkID | CompensationID | CustomerID | Sequential
-------+----------------+------------+-----------
0 0 0 0
1 0 2 1
2 0 1 2
だから、何があっLINKID/CompensationID /得意シーケンシャルは常に(補償がありどのように多くのリンクによって異なります)リンクテーブルに0からNに行きます。今ここに
は問題です:私はすべての報酬のそのリンクの満たし、次の要件をリストしたい:リンク 得意先、この場合に シーケンシャル= 0(最初のリンクを)=とLASTシーケンシャル=(中
検索2) リストの補償はここ
は、私がこれまでに得たものである:
SELECT * FROM Compensation JOIN Link ON Compensation.ID = Link.CompensationID
WHERE Link.CustomerID=A AND Link.Sequential = 0 AND Link.Sequential=LAST
私はLink.Sequentialが0にカントを知っているので、これは多かれ少なかれ擬似SQLで、同時に別の価値がありますが、私はこれをどうやって行うのか分かりません。
ご協力いただければ幸いです。
ありがとうございます。
P.S. 大きな壁には申し訳ありません。
をお試しくださいLASTです - リンクテーブルに複数の行がある場合は決してありません)。 –
一人の顧客のすべての最初のリンクとすべての最後のリンクが必要ですか? – OrangeDog
リンクの最初と最後の行にCustomerIDがAかどうかを確認する必要があります。だから、私は2行だけをチェックする必要があります。 – vanneto