![]() |
Re: Performance verbessern
hi,
danke für die tipps - habe es vllt etwas umständlich ausgedrückt - das kname,uname und rname bezieht sich nicht auf die namen in der einzelnen tabellen sondern schon auf die id deswegen sind diese als integer angelegt. wie läuft das mit der rekursiven tabelle?
Delphi-Quellcode:
sehe ich das so richtig?
ID=1
KAT_ID=1 iPos=0 Name=Fleisch //eine hauptkategorie ID=2 Kat_ID=1 iPos=1 Name=Hackfleisch //eine unterkategorie von Fleisch ID=3 Kat_ID=1 iPos=2 Name=Schwein //eine unterkategorie von Fleisch ID=4 Kat_ID=2 iPos=0 Name=Auflauf & Gratin //eine hauptkategorie ID=5 Kat_ID=2 iPos=1 Name=Kartoffelgratin //eine unterkategorie von Auflauf & Gratin |
Re: Performance verbessern
Besser so:
Code:
Das mit den Schlüsseln in deinen DDL Statements habe ich übersehen - entschuldige bitte.
ID KAT_ID IPOS NAME
1 NULL 0 Fleisch 2 1 0 Hackfleisch 3 1 1 Schwein ... Freundliche Grüße |
Re: Performance verbessern
Zitat:
durch die KAT_ID weise ich der unterkategorie die hauptkategorie zu oder nicht? gruß |
Re: Performance verbessern
Das hast du richtig erkannt - und damit ist eine wertmäßige Verknüpfung hergestellt, die später in einem JOIN der Tabelle mit sich selbst verwendet werden kann.
|
Re: Performance verbessern
hi marabu,
so ich hab nun mein programm nochmal von vorne angefangen mit der tabellenstruktur von dir - die ich nachdem ich mich damit beschäftigt habe einleuchtend finde. nun habe ich aber doch ein paar kleinere verständnis probleme im bezug von rezepte speichern. ich bin nun soweit das ich alles eingetragen habe und das rezept speichern will. ich habe als beispiel die hauptkategorie 'Fleisch' ausgewählt und als Unterkategorie 'Hackfleisch' wie bekomme ich nun raus welche KAT_ID die kategorie Fleisch hat um diese in die rezept tabelle zu speichern? desweiteren glaube ich das du einen kleinen fehler in der struktur hast, da man meiner bescheidenen meinung nach in die tabelle rezepte auch noch das feld 'ipos' aus der tabelle kategorien einbringen müsste damit ich ein rezept auch der dazugehörigen unterkategorie zuweisen kann. wenn ich falsch liege sag es bitte - ich hab durch diesen thread schon viel gelernt und ich möchte nicht aufhören damit ;) ich habe mir schon verschieden sql-referenzen im netz angeschaut und auch schon mit INNER und OUTER JOIN rumgespielt in mysqlfront. werde ich zum angebrachten zeitpunkt vertiefen. danke nochmals für die hilfe von allen gruß |
Re: Performance verbessern
Zitat:
SQL-Code:
ermitteln
select KAT_ID from Kategorien where Name = 'Hackfleisch';
|
Re: Performance verbessern
Guten Morgen,
Zitat:
Zitat:
Freundliche Grüße |
Re: Performance verbessern
Zitat:
Zitat:
Delphi-Quellcode:
In diesem beispiel hier sehen ich keine beziehung zwischen der kategorie und der unterkategorie -> evtl so?
ID KAT_ID IPOS NAME
1 NULL 0 Fleisch 2 1 0 Hackfleisch 3 1 1 Schwein ...
Delphi-Quellcode:
bei mir hätte die zweite hauptkategorie zb auflauf dann bei iPos die zahl 1 usw...
ID KAT_ID IPOS NAME
1 NULL 0 Fleisch 2 1 0 Hackfleisch 3 [b]2[/b] [b]0[/b] Schwein ... oder steh ich irgendwie komplett auf dem schlauch und seh den wald vor lauter bäumen nicht? Zitat:
danke weiterhin für eure hilfe und geduld. gruß |
Re: Performance verbessern
Hi,
Zitat:
Code:
Das Feld IPOS regelt die Anzeige-Reihenfolge der Unterkategorien in der jewiligen Hauptkategorie, aber auch die Ordnung der Hauptkategorien. Um deine (Unter)Kategorien in einer TreeView anzeigen zu können brauchst du dann einen LEFT OUTER JOIN. Ein einziges Statement liefert dir deine Daten in genau der Reihenfolge, die du für die Anzeige brauchst:
ID,KAT_ID,IPOS,NAME
1,NULL,0,"Eier- & Mehlspeisen" 2,NULL,1,"Auflauf & Co." 3,NULL,2,"Fleisch" ... 22,1,0,"Crêpes" 24,1,1,"Deftiges & Delikates" 25,1,2,"Omelettes" 26,1,3,"Pfannkuchen" 27,1,4,"Sonstiges" 28,2,0,"Sonstiges" 29,2,1,"Gratins" 30,2,2,"Aufläufe" 31,2,3,"Soufflès" 32,3,0,"Hackfleisch" 33,3,1,"Kalb" 34,3,2,"Lamm & Hammel" 35,3,3,"Rind" 36,3,4,"Schwein" 37,3,5,"Sonstiges & Delikatessen"
SQL-Code:
Hoffentlich habe ich nicht zu viele Fehler eingebaut.
SELECT U.*
FROM Kategorien U LEFT OUTER JOIN Kategorien K ON K.ID = U.KAT_ID ORDER BY K.iPos, U.iPos Freundliche Grüße |
Re: Performance verbessern
hi,
danke für deine unendlich geduld :) nun habs glaube ich auch ich verstanden. muss ich dann beim speichern eines rezeptes erst einmal abfragen welche id meine jeweilige kategorie und unterkategorie hat bevor ich mit meiner zeos table das ganze wegspeichern kann? sehe ich das richtig? gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz