2017-10-13 4 views
0

私は2つのテーブルを持ち、それぞれに4つのフィールドがあります。 A crc,title,parentおよびparent_typeである。いくつかのフィールドにジョインし、真に異なる行だけをフィルタリングします。

これらのテーブルのデータは、ファイルとそれらが属するエンティティを表します。

同じCRCを持つファイルは、複数のエンティティに属することができます。

第1のテーブルはある時点のスナップショットを表し、第2のテーブルは別の時点のスナップショットを表します。

ファイルを「移動」(ファイルシステムmvの操作と見なします)すると、parentおよび/またはparent_typeが変更されます。 http://sqlfiddle.com/#!5/89f0d4/1

注意をfile 1は、2人の異なる親に属していること:私はスナップショットAとスナップショットBの間

を移動されたファイルのリストを取得したい

これは私が現在持っているものです。 file 4が追加/作成されました。 file 22 GRUPから3 GRUPに移動しました。それは私がに興味があるものです

+0

これはあなたの質問に答えますか? https://stackoverflow.com/questions/5676559/how-to-write-not-in-sql-query-using-join – Nosajimiki

+0

@Nosajimikiいいえ、私はすでに参加方法を知っています(実際に、私が提供したリンク私の現在の進歩はすでにそれをしています)。私が求めていることの難しさは、 "distinct with multiple join"です。 – alexandernst

+1

あなたのデータによると、ファイルは同時に2つの場所に置くことができます。あれは正しいですか? –

答えて

0

私は何が必要正しくあなたの質問を変更していない人を除外するためのミックスに参加し、左を追加することで理解していれば...以下を参照:。

select a.* 
    from memarxiu a 
    join arxiu b 
    on b.crc = a.crc 
    left join (select * 
       from arxiu) c 
    on c.crc = a.crc 
    and c.parent = a.parent 
    and c.parent_type = a.parent_type 
    where a.title = b.title 
    and (a.parent <> b.parent 
    or a.parent_type <> b.parent_type) 
    and c.crc is null; 
+0

私の実際のデータで確認しましょう。 – alexandernst

+0

それは動作していないようです。矢印が指している要素の 'parent'の変更点に注目してください:https://imagebin.ca/v/3dgU4CXIylpu – alexandernst

関連する問題