を破棄しましょう。SQLiteの内部には、私のようなものに見えるお店に関するいくつかのデータを持って重複行を生成するようだと、おそらくいくつかの他の行に
私は、既存のSQLiteのクエリがあります。
select s.COMSERNO, s.COMNAME, COMALTNAME, s.COMCODE, s.COMADDR, s.COMPCODE, s.COMCITY, x.lastVisit, y.memoText, l.COMCALL
from TCOMPANY s
left outer join (select COMSERNO, max(CALEDATE || CALESTART) as lastVisit from TCALENTR where SALMSERN='000000000000019' and (CALEDATE || CALESTART) < strftime('%Y%m%d%H%M', 'now', 'localtime') group by COMSERNO) x on (x.COMSERNO=s.COMSERNO)
left outer join (select MEMOSERN1 as comSerno, max(MEMOTEXT) as memoText from TMEMO where MEMOTYPE='0' and 0<length(MEMOTEXT) and MEMOSERN2 in ('Notes')group by MEMOSERN1) y on (y.comSerno=s.COMSERNO)
left outer join LSALCOM l on l.COMSERNO=s.COMSERNO
and SALMSERN='000000000000019'
order by s.COMNAME, s.COMSERNO
上記リターン174行を。
私はそれが1つを持っている場合は、お店のための「チェーン」を見せたいので、データは次のようなものになります。
を、私は別のテーブルを持って、LCOMCOM
各COMSERNO
中のため私のオリジナルの結果セット(各ショップ)私はこのショップがチェーンの一部であるかどうかを判断する必要があります。
私はCOMSERN2
にLCOMCOM
に参加し、列LCOMATR1
が値「チェーン」を持っている場合、それは店COMSERN2
がチェーンであることを意味します。その後、COMSERN1
をLCOMCOM
から取り出し、元の表TCOMPANY
を使用して検索し、チェーン名を表示します。
inner join LCOMCOM z on (s.COMSERNO=z.COMSERN2)
私は私のクエリに上記の2枚を追加しようとしたが、それは私が期待したもの行いません:
ここに私のコードここcase when z.lcomatr1 = 'Chain' then (select p.COMNAME from TCOMPANY p inner join LCOMCOM q on (p.COMSERNO=q.COMSERN2) where q.COMSERN1 = z.comsern1) else '' end as Chain
はLCOMCOM
が参加されています
select s.COMSERNO, s.COMNAME, COMALTNAME, s.COMCODE, s.COMADDR, s.COMPCODE, s.COMCITY, x.lastVisit, y.memoText, l.COMCALL,
case when z.lcomatr1 = 'Chain' then (select p.COMNAME from TCOMPANY p inner join LCOMCOM q on (p.COMSERNO=q.COMSERN2) where q.COMSERN1 = z.comsern1) else '' end as Chain
from TCOMPANY s
left outer join (select COMSERNO, max(CALEDATE || CALESTART) as lastVisit from TCALENTR where SALMSERN='000000000000019' and (CALEDATE || CALESTART) < strftime('%Y%m%d%H%M', 'now', 'localtime') group by COMSERNO) x on (x.COMSERNO=s.COMSERNO)
left outer join (select MEMOSERN1 as comSerno, max(MEMOTEXT) as memoText from TMEMO where MEMOTYPE='0' and 0<length(MEMOTEXT) and MEMOSERN2 in ('Notes')group by MEMOSERN1) y on (y.comSerno=s.COMSERNO)
left outer join LSALCOM l on l.COMSERNO=s.COMSERNO
inner join LCOMCOM z on (s.COMSERNO=z.COMSERN2)
and SALMSERN='000000000000019'
order by s.COMNAME, s.COMSERNO
上記の結果は、174行ではなく548行を返します。一部の店舗は現在4行になります。
そして、いくつかのお店ので、同じように、2行に今ある:初期SELECT
は348に行数が減少し、それは今、すべてのチェーンのように見えた後
がDISTINCT
を追加します店舗は2列になっています。
私はここで何が起こっているのかわかりませんが、おそらくを両方ともSELECT
で2回指していると間違っています。適切であれば、チェーンを使って174行を取得する方法を教えてもらえますか?