0

からプルしているさまざまなテーブル/ビューがあります: InvoiceDetailcontactpartyaddressおよびremarks

基本的に、テーブルからデータを取得する必要があり、remarksそれをテーブルに関連付ける唯一の方法は、テーブルpartyの残りの部分にアクセスして、テーブルの外部キーである列をremarks参照することです。idparty

これはビューidの列でもあるため、句が実行されると、その側の id フィールドが結合され、他の列に関連するものは何も残りません。また、どちらのテーブルの列の名前も変更できません。InvoiceFROMInvoiceremarks

 SELECT *
FROM Invoice as invoice_view LEFT OUTER JOIN
  Detail as details ON invoice_view.transact = details.transact LEFT OUTER JOIN
  contact AS co_contact ON invoice_view.company = co_contact.party LEFT OUTER JOIN
  contact AS cp_contact ON invoice_view.company = cp_contact.party INNER JOIN
  party as main_party ON invoice_view.party = main_party.party INNER JOIN
  party as pay_party ON invoice_view.pay = pay_party.party INNER JOIN
  party as rec_party ON invoice_view.rec = rec_party.party LEFT OUTER JOIN

  contact as rec_contact ON rec_party.party = rec_contact.party INNER JOIN
  address as rec_address ON rec_contact.party = rec_address.party AND rec_contact.address = rec_address.addresscode LEFT OUTER JOIN
   contact AS pay_contact ON pay_party.party = pay_contact.party INNER JOIN
   adddress AS pay_address ON pay_contact.party = pay_address.party AND pay_contact.address = pay_address.addresscode AND pay_party.party = pay_address.party LEFT OUTER JOIN
 --What I tried to get it working
  remark as cp_remark CROSS JOIN
 party as custom_party

 WHERE
  (   (custom_party.party = pay_party.party) AND (custom_party.id = cp_remark.id)             OR (cp_remark.id IS NULL) OR (custom_party.remark = 0)) 
 --More where statements that have no affect on this
4

1 に答える 1