(Gast)
n/a Beiträge
|
AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem
2. Mai 2014, 20:47
Das Thema Views habe ich bisher noch nicht verfolgt, denke aber, dass dies eines meiner nächsten Entwicklungsschritte in meiner Hobbyprogrammierung sein werden.
Ein View ist im Prinzip nichts anderes als ein spezielles Select-Ergebnis, das in der Datenbank vorgehalten wird. Es werden dabei keine weiteren Tabellen erzeugt. Ich verwende Views sehr häufig, z.B. als Report-Basis oder eben zum leichteren Selektieren, Filtern und Sortieren. Ein View kannst du quasi als Tabelle behandeln und daher via Query-Komponente genau so abrufen wie jede andere Tabelle.
Im IbExpert erstellt man ein View, indem man im DB-Baum einen Rechtsklick auf Views ausführt und Neues View wählt. Bevor ich dir jetzt alles haarklein erkläre, hilft dir vielleicht ein Beispiel, das ich in meiner Projektverwaltung einsetze und das mir alle relevanen Kundendaten in einer quasi virtuellen Tabelle präsentiert:
Code:
CREATE OR ALTER VIEW A_KUNDEN(
KUNDE_INDEX,
KUNDE_FIRMA,
KUNDE_NACHNAME,
KUNDE_VORNAME,
KUNDE_STRASSE,
KUNDE_HNR,
KUNDE_PLZ,
KUNDE_ORT,
KUNDE_BANK,
KUNDE_BLZ,
KUNDE_PAN,
KUNDE_BIC,
KUNDE_KONTO,
KUNDE_NAME_FULL,
KUNDE_STRASSE_FULL,
KUNDE_ORT_FULL,
KUNDE_GESCHLECHT,
KUNDE_ANREDE,
KUNDE_LAND,
KUNDE_EMAIL,
KUNDE_HOMEPAGE,
KUNDE_FESTNETZ,
KUNDE_HANDY,
KUNDE_MEMO,
KUNDE_ZEIT,
KUNDE_ZEIT_STRING,
KUNDE_PROJEKTE,
KUNDE_BETRAG,
KUNDE_ABSENDER,
KUNDE_SORTTEXT)
AS
select
KUNDE.IDX_KUNDE,
KUNDE.FIRMA,
KUNDE.KONTAKT_NACHNAME,
KUNDE.KONTAKT_VORNAME,
KUNDE.STRASSE,
KUNDE.HAUSNR,
KUNDE.PLZ,
KUNDE.ORT,
BLZ.KURZ,
BLZ.BLZ,
BLZ.PAN,
BLZ.BIC,
KUNDE.KONTO,
KUNDE.KONTAKT_VORNAME || ' ' || KUNDE.KONTAKT_NACHNAME,
KUNDE.STRASSE || ' ' || KUNDE.HAUSNR,
KUNDE.PLZ || ' ' || KUNDE.ORT,
GESCHLECHT.GESCHLECHT,
GESCHLECHT.ANREDE,
LAND.LAND,
KUNDE.EMAIL,
KUNDE.HOMEPAGE,
KUNDE.FESTNETZ,
KUNDE.HANDY,
KUNDE.KUNDE_MEMO,
KUNDE.ZEIT,
KUNDE.ZEIT_STRING,
KUNDE.PROJEKTZAHL,
KUNDE.PROJEKTBETRAG,
KUNDE.FIRMA || ' · ' || KUNDE.STRASSE || ' ' || KUNDE.HAUSNR || ' · ' || KUNDE.PLZ || ' ' || KUNDE.ORT,
B_TABELLEN.A_KUNDEN_SORTTEXT
from KUNDE
inner join GESCHLECHT on GESCHLECHT.IDX_GESCHLECHT = KUNDE.GESCHLECHT
inner join LAND on LAND.IDX_LAND = KUNDE.LAND
inner join BLZ on BLZ.IDX_BLZ = KUNDE.BANKVERBINDUNG
inner join B_TABELLEN on B_TABELLEN.BENUTZER = KUNDE.BENUTZER
;
|