AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Performance verbessern
Thema durchsuchen
Ansicht
Themen-Optionen

Performance verbessern

Ein Thema von Luncustaf · begonnen am 8. Dez 2006 · letzter Beitrag vom 7. Jan 2007
Antwort Antwort
Seite 9 von 9   « Erste     789   
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#81

Re: Performance verbessern

  Alt 14. Dez 2006, 21:07
den hier
Miniaturansicht angehängter Grafiken
error_355.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Performance verbessern

  Alt 14. Dez 2006, 21:09
Wie es aussieht unterstützt MySQL 4 eine Subselects
Du könntest Versuchen noch die Rezepte zu den Unterkategorien hinzuzujoinen und dann zu Gruppieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#83

Re: Performance verbessern

  Alt 14. Dez 2006, 21:21
so hab das nunmal so versucht - nun muss noch ne schöhnheitsop dran

Count(r.NAME) bringt mir den wert 7 - sollte aber 1 sein :/ - ich denke mal weiles sieben zutaten sind - aber ich steig da so langsam net mehr so richtig durch :/

SQL-Code:
SELECT U.*, Count(r.NAME)
FROM kategorien U
JOIN kategorien K, rezept r, zutat z ON K.ID = U.KAT_ID AND U.KAT_ID = r.KAT_ID AND U.iPos = z.iPos AND z.REZ_ID = r.ID
GROUP BY U.ID
ORDER BY K.iPos, U.iPos
dann hätte ich zumindestmal die unterkategorie - würde noch die hauptkategorie fehlen

gruß
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Performance verbessern

  Alt 14. Dez 2006, 21:31
Ich dachte eher an
SQL-Code:
SELECT COUNT(R.ID)
FROM REZEPTE R JOIN kategorien U ON R.KAT_ID = U.ID
LEFT JOIN kategorien K ON U.ID = K.KAT_ID
GROUP BY K.ID
Markus Kinzler
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#85

Re: Performance verbessern

  Alt 16. Dez 2006, 12:58
hi,

hab es nun so gemacht - da die anderen lösungen entweder auffem server net laufen, ich da net durchsteige, oder nicht das gewünschte liefern
wenn ich das nun laufen alsse sagt er mir das er das feld t.name nicht findet.
in mysqlfront lüppt alles - wieso unter delphi net?

Delphi-Quellcode:
sqlq.SQL.Add('SELECT k.name, Count(k.name) AS kanzahl from kategorien k, rezept r WHERE k.KAT_ID = r.KAT_ID AND k.iPos = r.iPos '
                 +' GROUP BY k.name '
                 +' UNION '
                 +' SELECT t.name, Count(t.name) AS tanzahl FROM kategorien t, rezept u WHERE t.iPos = u.KAT_ID AND t.KAT_ID is NULL '
                 +' GROUP BY t.name');
gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#86

Re: Performance verbessern

  Alt 16. Dez 2006, 17:39
Hallo,

das folgende SELECT Statement liefert mir alle für den Aufbau der TreeView benötigten Informationen:

SQL-Code:
SELECT U.*, COALESCE(R.ANZAHL, S.ANZAHL, 0)
FROM Kategorien U
LEFT OUTER JOIN Kategorien K ON K.ID = U.KAT_ID
LEFT OUTER JOIN (
  SELECT KAT_ID, COUNT(*) AS ANZAHL
  FROM REZEPTE
  GROUP BY KAT_ID
) AS R ON R.KAT_ID = U.ID
LEFT OUTER JOIN (
  SELECT K2.KAT_ID, COUNT(*) AS ANZAHL
  FROM REZEPTE R2
  LEFT OUTER JOIN Kategorien K2 ON K2.ID = R2.KAT_ID
  GROUP BY K2.KAT_ID
) AS S ON S.KAT_ID = U.ID
ORDER BY K.iPos, U.iPos
Ich habe bei meinem Statement den Tabellenaufbau aus meinem Beitrag #50 zu Grunde gelegt. Getestet habe ich mit MySQL Version 4.1.10 und dem MySQL Browser - aber nicht sehr lange...

Freundliche Grüße
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#87

Re: Performance verbessern

  Alt 16. Dez 2006, 18:12
hi,

danke für deine bemühungen - ich gugger mal das ich die mysql version auf dem server geupdatet bekomme - weil die answeisung bei mir wieder fehler auswirft bei dem ersten subselect.

gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#88

Re: Performance verbessern

  Alt 16. Dez 2006, 20:33
Subselects gehen ab MySQL 4.1 - habe gerade entdeckt, dass dein Provider 4.0.23 fährt. Ohne Subselects müsste ich wohl eine oder mehrere Zwischentabellen verwenden um das gleiche Ergebnis zu erhalten. Wenn du kein Upgrade erhältst, dann solltest du vielleicht auf die Anzeige der Rezepte-Anzahl im Knoten verzichten und diese Sicht als gesonderte Auswertung anbieten.

Schönes Wochenende
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#89

Re: Performance verbessern

  Alt 7. Jan 2007, 17:40
hi marabu,

so nach weihnachten sylvester und dem ganzen stress bin ich nun mal wieder dazugekommen mich meinem problem zu widmen.
klappt nun soweit auch alles ganz gut nur 2 kleine problemchen hab ich noch.

1. ich bekomme mit deiner abfrage zwar die gesamtanzahl der rezepte in den kategorien aber nicht die anzahl der rezepte in den unterkategorien.


2. wie füge ich nun den jeweiligen kategorien die richtige unterkategorie zu? wenn ich es so wie immer mache

Delphi-Quellcode:
   with tv_kategorien.Items do
   begin
     t := AddChildObject(nil,sqlq.FieldByName('NAME').AsString + ' ('+sqlq.fieldbyname('COALESCE(R.ANZAHL, S.ANZAHL, 0)').AsString+')', Pointer(sqlq.FieldByName('iPos').AsInteger));
     AddChildObject(t,sqlq.fieldbyname('NAME?').AsString+ ' (' + sqlq.fieldbyname('COALESCE(R.ANZAHL, S.ANZAHL, 0)?').AsString +')', Pointer(sqlq.FieldByName('iPos').AsInteger));
   end;
   sqlq.Next;
dann ieht es so wie auf dem bild aus - mir ist klar das ich bei den fieldbyname wo die fragezeichen mit dabei stehen etwas anderes reinschreiben muss aber ich weis nicht genau was - oder das ich eine abfrage machen muss. kannst du mir da vllt nochmal auf die sprünge helfen?

gruß und ein gutes neues jahr
Simon
Miniaturansicht angehängter Grafiken
baum_396.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 9   « Erste     789   


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 18:24 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