DEV Community

seng
seng

Posted on

The Projection and Selection Operations in Relational Algebra with Fortran

Projection is used to vertically filter and select columns in a table.The Selection operation can be used to filter rows that satisfy a certain condition in a table.

program learn
    implicit none
    integer,dimension(2,3)::a
    integer,dimension(2,3)::b
    integer,dimension(24)::c
    integer,dimension(4,6)::d
    integer::i,j
    integer::k
    a=reshape([1,2,66,89,74,79],[2,3],order=[1,2])
    b=reshape([1,2,76,99,84,59],[2,3],order=[1,2])
    write (*,120) 'aid','a1','a2','bid','b1','b2'
    c=[((a(i,:),b(j,:),i=1,2),j=1,2)]
    d=reshape(c,[4,6],order=[2,1])
    write (*,110) c
    write  (*,*) "---------"
    write (*,110) d(2,:)
    write  (*,*) "---------"
    write (*,110) d(:,2)
    write  (*,*) "---------"
    write  (*,*) "b1>70 and a2<70"
    write (*,120) 'aid','a1','a2','bid','b1','b2'
    !b1>70 and a2<90 Selection
    k=1
    do
       if (d(k,5)>70 .and. d(k,3)<79) write (*,110) d(k,:)
       k=k+1
       if (k>4) exit
    end do
    write (*,120) 'aid','a1','a2','bid','b1','b2'
    !b1>70 and a2<90 Projection and Selection
    write  (*,*) "b1>70 and a2<70 and aid=bid"
    write (*,120) 'aid','a1','a2','b1','b2'
    k=1
    do
       if (d(k,5)>70 .and. d(k,3)<79 .and. d(k,1)==d(k,4)) write (*,110) d(k,1:3),d(k,5:6)
       k=k+1
       if (k>4) exit
    end do
    110 format (6(I3))
    120 format (6(A3))
end program learn
Enter fullscreen mode Exit fullscreen mode

Top comments (0)