AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verknüpfung von Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung von Tabellen

Ein Thema von Pindel · begonnen am 7. Mär 2005 · letzter Beitrag vom 11. Mär 2005
Antwort Antwort
Seite 1 von 3  1 23      
Pindel

Registriert seit: 29. Nov 2004
13 Beiträge
 
#1

Verknüpfung von Tabellen

  Alt 7. Mär 2005, 09:51
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery
Hallo...

Ich habe ein Problem und hoffe ihr könnt mir helfen...
Ich habe zwei Tabellen zum Beispiel Videos und Kunden...
Diese Tabellen möchte ich jetzt m:n Verknüpfen, wie machen ich das...
Die Tabellen sind vom Typ TTable. Und wenn die dann Verknüpft sind möchte ich
die durchsuchen...
Wie mache ich das???

Danke schonmal im vorraus....
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verknüpfung von Tabellen

  Alt 7. Mär 2005, 10:01
Zitat von Pindel:
Hallo...

Ich habe ein Problem und hoffe ihr könnt mir helfen...
Ich habe zwei Tabellen zum Beispiel Videos und Kunden...
Diese Tabellen möchte ich jetzt m:n Verknüpfen, wie machen ich das...
Die Tabellen sind vom Typ TTable. Und wenn die dann Verknüpft sind möchte ich
die durchsuchen...
Wie mache ich das???

Danke schonmal im vorraus....
Wenn Du TQuery verwendest, setzt Du SQL ein um eine verknüpfte Ansicht der Tabelleninhalte zu erhalten. Beispiel:
SQL-Code:
SELECT Kunden.Name,
       Kunden.Nummer,
       Video.Titel
FROM Kunden
LEFT OUTER JOIN Video ON Video.Kundennummer = Kunden.Nummer
Besser wäre aber in diesem Fall noch eine dritte Tabelle, in der steht, welcher Kunde welches Video wann ausgeliehen hat. Sonst hast Du bei einer m:n Verknüpfung ja sowohl die Videodaten als auch die Kundendaten doppelt!
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Pindel

Registriert seit: 29. Nov 2004
13 Beiträge
 
#3

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 17:23
Habe das noch nicht ganz verstanden....
Ich habe in einer Tabelle die Kunden und möchte in einer
Anderen die Videos haben...
nun möchte ich wenn ein Kunde mehrere Videos ausleiht... das ich das sehen kann welche er ausleiht...
und wenn von einem film mehrere weg sind das ich sehen kann wer die hat...
außerdem komme ich nicht so ganz mit der suche klar...
ich möchte gerne nach alles suchen können und auch nach mehreren kriterien...

danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 17:33
wie wäre es erstmal mit einem db tutorial?
  Mit Zitat antworten Zitat
Pindel

Registriert seit: 29. Nov 2004
13 Beiträge
 
#5

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 17:43
Ich denke das habe ich nicht nötig...
mir ist schon klar was er meint, aber ich weiss nicht genau wie ich das vernünftig hinbekomme
wenn ich mich an die normalformen halten muss...
ich kann zum beispiel eine dritte tabelle machn in der ich die ID der videos-tabelle und die
id der kunden-tabelle mit einander verknüpfe, aber ich weiss nicht wie ich das dann vernünftig anzeigen
soll...
wenn ich zum beipiel auf einen kunden klicke, das ich dann sehe welche filme der ausgeliehen hat...
probleme habe ich außerdem mit der suche...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 18:02
Zitat von Pindel:
Ich denke das habe ich nicht nötig...
mir ist schon klar was er meint, aber ich weiss nicht genau wie ich das vernünftig hinbekomme
wenn ich mich an die normalformen halten muss...
ich kann zum beispiel eine dritte tabelle machn in der ich die ID der videos-tabelle und die
id der kunden-tabelle mit einander verknüpfe, aber ich weiss nicht wie ich das dann vernünftig anzeigen
soll...
wenn ich zum beipiel auf einen kunden klicke, das ich dann sehe welche filme der ausgeliehen hat...
probleme habe ich außerdem mit der suche...
Du könntest z.B. einen Kundendialog machen, wo Name Adresse usw. drinstehen. Und dort fügst Du ein DbGrid ein, in dem die von diesem Kunden ausgeliehenen Filme mit Ausleihdatum stehen. Dazu musst Du von der untergeordneten TQuery die Eigenschaft DataSource setzen und kannst dann auf die Felder als automatische Parameter zugreifen.

Beipiel qryKunden:

SQL-Code:
SELECT *
FROM Kunden
WHERE id = :id
Delphi-Quellcode:
qryKunden.ParambyName.('Id').AsInteger := fKundenId
qryKunden.Open;
Beispiel für 2 Stufige Subquery der ausgeliehenen Filme:

SQL-Code:
SELECT Filme.Titel,
       Ausleih.Datum
FROM Ausleih
LEFT OUTER JOIN Filme on Filme.Id = Ausleih.FilmId
WHERE Ausleih.KundenId = :Id
Und zum Verbinden
qryAusleih.DataSource := dsKunden; Jedesmal wenn Du den Tabellenzeiger in qryKunden (dsKunden) bewegst (Next, Prior etc.) prüft dann qryAusleih über eine Notification die DataSource und aktualisiert sich selbst (d.h. macht Close, füllt den Parameter :id mit dem GLEICHNAMIGEN Wert aus qryKunden und wieder Open).

Analog kannst Du das auch umgekehrt bei den Filmen machen, also wer hat welchen Film ausgeliehen. In den jweiligen Grids könntest Du auch gleich Bearbeitungsoptionen mit reinnehmen, Neu, Löschen usw. dann kannst Du von den Kunden gleich zum Verleih springen oder vom Film einen Kunden entfernen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 18:07
Zitat von Pindel:
Ich denke das habe ich nicht nötig...
Hey, man kann immer noch was dazu lernen...

Also bei einer Videothek gibt es ja möglicherweise mehrere Exemplare vom gleichen Film.
Wenn man schlau ist, hat jedes Medium einen eindeutigen Barcode.
Also gibt es nun 3 Tabellen:
Kunden, Videos und Medien.
Die Tabelle Medien hat folgende Felder:
Code:
IdMedia - der eindeutige Schlüssel (=der Barcode)
IdVideo - Verweis auf die Filmdaten
Quality - 1=Neuwertig 6=kaputt
UseCount - Anzahl der Ausleihvorgänge
IdKunde - Der Kunde, der den Film hat oder (NULL)
Mediatype- 0=VHS, 1=DVD, 2=SuperDVD, 3= AudioCD, ....
Ob ein Kunde ein Medium ausgeliehen hat oder nicht, wird in der Tabelle Medien vermerkt.
Denn ein physikalischer Gegenstand kann entweder bei einem Kunden sein oder im Laden.

Zusätzlich sollte man eine Historytabelle führen, mit der man sämtliche Ausleih- und Rückgabevorgänge nachvollziehen kann.
In der Historytabelle steht IdKunde, IdMedia, Vorgang (1=Ausleih, 2=Rück), DatumUhrzeit, Verkaeufer, ...

Das sollte dir doch mal genügend Anregungen für das DB Design geben.
Andreas
  Mit Zitat antworten Zitat
Pindel

Registriert seit: 29. Nov 2004
13 Beiträge
 
#8

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 18:08
sauber, danke...genau sowas habe ich gesucht...
und wie funktioniert das mit der suche??
die aufgabe ist das ich nach allem suchen kann und auch nach mehreren kriterien auf einmal...
danke
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 18:13
Zitat von Pindel:
sauber, danke...genau sowas habe ich gesucht...
und wie funktioniert das mit der suche??
die aufgabe ist das ich nach allem suchen kann und auch nach mehreren kriterien auf einmal...
danke
Suchen kannst Du entweder über Locate, Findkey oder mit SELECT. Locate stellt sich den passenden Index selber ein, Findkey erwartet dass der richtige bereits eingestellt ist (aber dafür auch 20 x schneller) und mit SELECT (evtl. verknüpft mit LIKE) bist Du am flexibelsten.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Pindel

Registriert seit: 29. Nov 2004
13 Beiträge
 
#10

Re: Verknüpfung von Tabellen

  Alt 9. Mär 2005, 09:00
Wenn ich mit einem Query und select nach sachen
gesucht habe, wie kann ich die ergebnisse dann nochmal nach
anderen sachen durchsuchen???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz