![]() |
Re: Performance verbessern
oh - dll programmierung - hab ich mich mal kurz mit beschäftigt und erstmal gar nichts verstanden ;)
ich habs nun so gemacht ist denke ich auch ok.
Delphi-Quellcode:
das klappt auch soweit kein problem - ich hab aber eher noch das problem das ich mit den abfragen gar nicht klar komme.
sqlt.Post;
sqlq.SQL.Clear; sqlq.SQL.Add('SELECT ID FROM rezept ORDER BY ID ASC'); sqlq.Open; sqlq.Last; lastid := sqlq.FieldValues['ID']; sqlq.Close; hab zwar das mit dem join soweit glaube ich verstanden nur raff ich das mit dem einträge zählen irgendwie nicht. wie bekomme ich nun raus wieviele rezept in einer hauptkategorie sind und wieviel in der dazugehörigen unterkategorie. ich hab die abfrage von dir (@marabu) probiert umzusetzen aber irgendwie steig ich da nicht richtig durch. wenn ich nur die tabellen rezept und kategorien vergleiche dann bekomme ich doch nicht die anzahl der rezepte in unterkategorien raus? gruß Edit: ich hab nun mal bisserl probiert das angelese umzusetzen - stimmt noch net ganz ;) - aber probieren kostet nix - net das ihr denkt ich lass mir alles servieren.
SQL-Code:
SELECT k.NAME, Count(r.KAT_ID) FROM kategorien k
LEFT JOIN rezept r ON r.KAT_ID = k.KAT_ID GROUP BY k.NAME UNION SELECT k.NAME, Count(z.iPos) FROM kategorien k, rezept r LEFT JOIN zutat z ON z.iPos = k.iPos AND z.REZ_ID = r.ID GROUP BY k.NAME |
Re: Performance verbessern
Hi,
besser so:
Delphi-Quellcode:
Das Zählen der Einträge zu den einzelnen Kategorien habe ich in meinem SQL-Code aus Beitrag #59 unterlassen, weil ich es gar nicht brauche. Es ist viel einfacher beim Eintragen der Kategorien die entsprechenden Knoten im Baum zu zählen.
begin
// ... with sqlt do begin Post; SQL.Text := 'SELECT LAST_INSERT_ID()'; try Open; lastId := Fields[0].AsInteger; finally Close; end; // ... end; Freundliche Grüße |
Re: Performance verbessern
Zitat:
oder ich denk einfach komplett in die falsche richtung :( wenn ich die kategorien eintrage in die treeview - dann hab ich darin doch nicht die anzahl der rezepte drin stehen? wenn ich ich nun 10 hackfleisch rezepte habe dann hab ich doch trotzdem nur einmal den eintrag hackfleisch im baum der treeview? wie soll ich anhand davon wissen wieviele rezepte ich in dieser kategorie habe? sorry für die vielen fragen. gruß |
Re: Performance verbessern
Aber wenn die Kategorie Fleisch die Unterkategorin Hackfleisch und Braten hätte und dHackfleisch 10 un Braten 20 Einträge dann hätte Fleisch 30.
|
Re: Performance verbessern
hi,
jo das ist soweit klar - aber trotzdem stehen diese informationen nicht in der tabelle kategorien die mit der abfrage nur abgefragt wird - wenn ich es richtigen verstanden hab macht marabu in der abfrage einen LEFT OUTER JOIN innerhalb der gleichen tabelle
SQL-Code:
dort stehen aber nur die kategorien + unterkategorien drin - die tabelle kann also gar nicht wissen wieviele rezepte schon eingetragen wurden oder nicht?
SELECT U.*
FROM kategorien U LEFT OUTER JOIN kategorien K ON K.ID = U.KAT_ID ORDER BY K.iPos, U.iPos und wenn ich komplett falsch liege wie bekomme ich dan nraus wieviel rezepte in den utnerkategorien gespeichert sind so das ich bei Fleisch 30 anfügen kann und bei hackfleisch 10 und bei braten 20. liebe grüße ein verwirrter Luncustaf |
Re: Performance verbessern
Hast ja Recht - ich habe Kategorien und Rezepte gedanklich in einen Topf geworfen. Natürlich musst du die Rezepte zählen.
Sorry für die Verwirrung - das kommt davon wenn man zuviele Dinge gleichzeitig macht... |
Re: Performance verbessern
Liste der Anhänge anzeigen (Anzahl: 1)
hi,
kein problem :)
SQL-Code:
hab das nun so gemacht bekomme ansatzweise was brauchbares raus - nämlich zwei datensätze. das ist aber das problem ich sollte nur einen bekommen weil in der tabelle rezept nur 1 datensatz steht.
SELECT U.*
FROM kategorien U LEFT OUTER JOIN rezept K ON K.KAT_ID = U.KAT_ID GROUP BY K.KAT_ID siehe bild. gruß |
Re: Performance verbessern
Kombiniere doch mal die beiden Abfragen:
SQL-Code:
Select Count(ID) from Rezept where Kat_ID in(
SELECT U.ID FROM kategorien U LEFT OUTER JOIN kategorien K ON K.ID = U.KAT_ID ORDER BY K.iPos, U.iPos) |
Re: Performance verbessern
hi,
bekomm ich einen fehler aber ich glaube das liegt eher daran das die mysql version des servers wo die db im inet lüppt die hier ist
SQL-Code:
gruß
Server version 4.0.23-Max-log
|
Re: Performance verbessern
Was für ein Fehler?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 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