通过加入表来获取列的计数

时间:2016-04-30 16:14:51

标签: sql oracle

enter image description here

我有三张表,它们相互连接在一起。表名是

  • ioa_invoice_line
  • ioa_invoice_line_notes
  • IOA_INV_LINE_NOTE_MAP

附上图像,以图形方式显示您的关系。我试图从inv_line_note_id表中获取IOA_INV_LINE_NOTE_MAP表中ioa_invoice_line表中每个id列的计数。请告知如何获取inv_line_note_id表的IOA_INV_LINE_NOTE_MAP列的计数以及ioa_invoice_line表中id列的上下文。

建议我添加了样本数据:

IOA_INVOICE_LINE

ID             VERSION
1234            Abc

IOA_INVOICE_LINE_NOTES

ID       INLI_ID        NOTES
345      1234           Aqou

INV_LINE_NOTE_MAP

ID      INV_LINE_NOTE_ID          ATTACHMENT
23            345                   rtfffr
24            345                   fhgygg

如上所示,就invoice_line而言,Attachment表格的列inv_line_note_map的列ID 1234计数为2

因此,请告知如何根据发票行表的列ID计算inv_line_note_map表的列附件的值,如果没有计数,则应返回0

我已尝试过以下内容,但这不是预期的解决方案,所以请提示

select * from IOA_INV_LINE_NOTE_MAP where inv_line_note_id =66060
select * from ioa_invoice_line_notes where inli_id = 97750
select * from ioa_invoice_line where id = 97750 ;

1 个答案:

答案 0 :(得分:0)

这似乎是一些外连接和count()函数调用的工作。

select ioa_invoice_line.id, count(inv_line_note_map.attachment) as attachment_count
from ioa_invoice_line
     left outer join ioa_invoice_line_notes 
              on ioa_invoice_line.id = ioa_invoice_line_notes.inli_id
     left outer join inv_line_note_map 
              on ioa_invoice_line_notes.id = inv_line_note_map.id
group by ioa_invoice_line.id;