AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO / DBGrid / Query / mehrere Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

ADO / DBGrid / Query / mehrere Tabellen

Ein Thema von tschinkes · begonnen am 6. Jul 2008 · letzter Beitrag vom 8. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#1

ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 19:35
Datenbank: Access • Zugriff über: ADO
Ich hoffe die Überschrift ist nicht zu überladen

Zu meinem Problem, ich habe sechs Tabellen in meiner Datenbank (Access), eine ist die Mastertabelle, die durch ADOQuery mit hilfe von Inner Joins verknüpft ist mit den anderen Tabellen, bis auf eine Tabelle.
Also MasterTabelle->Join->4weitereTabellen
Diese Daten werden dann in einem DBGrid angezeigt. Jetzt hatte ich die Idee das die letzte Tabelle die noch nicht verknüpft ist in dem DBGrid so anzuzeigen, das wenn ein datensatz aus der Mastertabelle übereinstimmt mit dergespeicherten ID in der sechsten Tabelle, dann soll im DBGrid in einer neuen Spalte, in dem Feld des betroffenen Datensatzes ein 'Ja' erscheint, ansonsten ein 'Nein'.
Um das Beipiel praktisch zu sehen, es handelt sich um eine Sammlung von Schallplatten, und sind unterteilt in einzelne Tabellen wegen der redudanz. Jetzt gibt es die sechste Tabelle der Leihe und ich möchte erreichen das in der Übersicht in dem DBGrid eine Spalte anzeigt ob die Schallplatte ausgeliehen ist oder nicht.
Ist ein wenig wirr erklärt aber ich hoffe man kann es verstehen, ist nicht gerade leicht das ganze zu beschreiben
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 19:37
-Erweiterung des joins
-Subquery
in Verbindung mit if()
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 19:54
SQL-Code:
SELECT *, IIf(y.id IS NULL;'Nein';'Ja') AS entliehen
FROM mastertabelle x
LEFT JOIN (SELECT DISTINCT id
           FROM tabelle6) y
  ON x.id = y.id
  Mit Zitat antworten Zitat
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 21:54
Also wenn ich die Anweisung alleine nach Omata mache

Zitat von omata:
SQL-Code:
SELECT *, IIf(y.id IS NULL;'Nein';'Ja') AS entliehen
FROM mastertabelle x
LEFT JOIN (SELECT DISTINCT id
           FROM tabelle6) y
  ON x.id = y.id
Bei mir:

SQL-Code:
SELECT *, iif(y.Platte IS NULL,'Nein','Ja') AS Ausleihe
FROM Platte x
LEFT JOIN (SELECT DISTINCT Platte x
FROM Leihe) y
ON x.id = y.Platte
funkioniert es schon mal, aber da ich nun noch die anderen Tabellen habe und diese ebenfals in einen Join legen muss, dachte ich mir logischer weise, das ich den dann in den ersten From ersetze und es sieht wie folgt aus:

SQL-Code:
SELECT *, iif(y.Platte IS NULL,'Nein','Ja') AS Ausleihe
FROM (SELECT * FROM (((Platte t1
INNER JOIN Interpret t2 ON t2.id=t1.Interpret)
INNER JOIN Label t3 ON t3.id=t1.Label)
INNER JOIN Stil t4 ON t4.id=t1.Stil)
INNER JOIN Qualität t5 ON t5.id=t1.Qualität)
LEFT JOIN (SELECT DISTINCT Platte x
FROM Leihe) y
ON x.id = y.Platte
Nun gibt mir aber Delphi einen JOIN Syntax Fehler, mmhh ich merk schon da muss man ganz schön fix sein das ganze ohne Probleme hinzubekommen Oo
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 22:20
SQL-Code:
SELECT *, iif(Leihe.Platte IS NULL,'Nein','Ja') AS Ausleihe
FROM ((((Platte AS t1
         INNER JOIN Interpret AS t2 ON t1.interpret = t2.id)
        INNER JOIN Label AS t3 ON t1.label = t3.id)
       INNER JOIN Stil AS t4 ON t1.stil = t4.id)
      INNER JOIN Qualität AS t5 ON t1.qualität = t5.id)
LEFT JOIN (SELECT DISTINCT Platte
           FROM Leihe) Leihe
  ON t1.id = Leihe.platte
  Mit Zitat antworten Zitat
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 6. Jul 2008, 22:49
SUPI Funzt!!!!!!!!!! *freu


Danke!
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 7. Jul 2008, 21:39
Eine Frage hätt ich noch, und zwar wenn ich nun über ein DBField einen bestimmten Text suchen möchte, wie müsste ich die Select Abfrage modifiezieren das er mir in allen Feldernm ushct und mir nur die gesuchten anzeigt? Daran hänge ich gerade...
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 7. Jul 2008, 21:50
Indem Du die Where-Klausel entsprechend erweiterst. Das Zauberwort heißt 'LIKE'. Da Access pervers ist, musst Du in der Hilfe schauen oder warten, bis ein Access-Guru (wer will das schon sein ) sich outet und Dir genau sagt, wie's geht.

Im Prinzip aber so:
select * from bla where feld1 like '%Suchtext%or feld2='%suchtext%' .... '%' ist hierbei eine Wildcard (wie '*' beim Suchen nach Dateien)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 7. Jul 2008, 21:51
Zitat:
'%' ist hierbei eine Wildcard (wie '*' beim Suchen nach Dateien)
Oder halt in Access
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: ADO / DBGrid / Query / mehrere Tabellen

  Alt 7. Jul 2008, 21:57
*lol gott sei dank bin ich mit der ansicht nicht alleine *fg, allein die SELECT Anweisung weiter oben ist ja schon pervers

Naja wenns ne einfachere Lösung gibt wäre ich echt dankbar dafür.

Also mit der LIKE Anweisung hab ich auch schon probiert, gibt eine Exception, irgendwo muss es da rein aber ich weiß nicht wo Oo

Mein Ansatz ist wie folgt:

Delphi-Quellcode:
  with DataModule1.ADOQueryGrid do
  begin
    Active := FALSE;
    SQL.Clear;
    SQL.add ('SELECT *, iif(Leihe.Platte IS NULL,''Nein'',''Ja'') AS Ausleihe' +
                'FROM ((((Platte AS t1' +
                'INNER JOIN Interpret AS t2 ON t1.interpret = t2.id)' +
                'INNER JOIN Label AS t3 ON t1.label = t3.id)' +
                'INNER JOIN Stil AS t4 ON t1.stil = t4.id)' +
                'INNER JOIN Qualität AS t5 ON t1.qualität = t5.id)' +
                'LEFT JOIN (SELECT DISTINCT Platte'+
                'FROM Leihe WHERE t1.CODE = :suchid) Leihe'+
                'ON t1.id = Leihe.platte');
    ParamCheck := true;
    Parameters.ParamByName('suchid').Value := Edit1.Text;
    Open;
    end;
  end;
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:20 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