Bekerja dengan tabel hierarkis

Pengantar Basis Data di Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Tabel hierarkis

  • Memiliki relasi dengan dirinya sendiri
  • Umum ditemukan pada:
    • Organisasi
    • Geografis
    • Jaringan
    • Graf
Pengantar Basis Data di Python

Tabel hierarkis - contoh

tabel hierarkis.jpg

Pengantar Basis Data di Python

Tabel hierarkis - alias()

  • Perlu cara melihat tabel dengan beberapa nama
  • Membuat referensi unik yang dapat digunakan
Pengantar Basis Data di Python

Kueri data hierarkis

managers = employees.alias()

stmt = select( [managers.columns.name.label('manager'), employees.columns.name.label('employee')])
stmt = stmt.select_from(employees.join( managers, managers.columns.id == employees.columns.manager)
stmt = stmt.order_by(managers.columns.name)
print(connection.execute(stmt).fetchall())
[(u'FILLMORE', u'GRANT'),
 (u'FILLMORE', u'ADAMS'),
 (u'HARDING', u'TAFT'), ...
Pengantar Basis Data di Python

group_by dan func

  • Penting menargetkan group_by() ke alias yang tepat
  • Hati-hati pada kolom yang dikenai fungsi
  • Jika tidak perlu memakai alias dan nama tabel sekaligus, jangan buat alias
Pengantar Basis Data di Python

Kueri data hierarkis

managers = employees.alias()

stmt = select([managers.columns.name, func.sum(employees.columns.sal)])
stmt = stmt.select_from(employees.join( managers, managers.columns.id == employees.columns.manager)
stmt = stmt.group_by(managers.columns.name) print(connection.execute(stmt).fetchall())
[(u'FILLMORE', Decimal('96000.00')),
 (u'GARFIELD', Decimal('83500.00')),
 (u'HARDING', Decimal('52000.00')),
 (u'JACKSON', Decimal('197000.00'))]
Pengantar Basis Data di Python

Ayo berlatih!

Pengantar Basis Data di Python

Preparing Video For Download...