Anzahl Inserate in Kategorie + Unterkat.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anzahl Inserate in Kategorie + Unterkat.

    Hallo,

    Ich habe eine DB Inserate mit den Feldern:

    id name kat

    und eine Kategorien mit

    id name kat_darueber_id

    Unterkategorien haben selbst keine Unterkategorien.

    Wie gebe ich nun möglichst resourcensparend die Anzhal der Inserate für jede Kat+Unterkat aus?

    Ist die Berechnung in Echtzeit überhaupt ohne grobe Performanceprobleme umsetzbar?

    Gruß,
    syco23
    Zuletzt geändert von syco23; 30.10.2005, 18:55.
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    Wenn du nur eine Ebene hast ( bei den Kategorien ) Kannst Du mit select count(*) arbeiten
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Das ist schon klar, ohne Unterkategorien muss ich für jede Kat nur einmal zählen.

      Aber mit unterkategrorien käme da einiges zusammen.

      bsp. 10 kats, je 10 Unterkats:

      1) 10 Kategorien auslesen + Inserate zählen => 1 Query + 1 Query
      2) Für jede Kat 10 Unterkats auslesen + Inserate zählen => 10*(1 Query + 10 Querys)

      => ergibt 112 Querys nur für die Kategorieübersicht auf der Startseite...

      Oder gehts auch anders (einfacher)?

      Gruß,
      Syco
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar


      • #4
        GROUP BY kennst du aber schon. oder?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          scheibe eine Function
          und übergebe die beiden Werte, sowie lasse Dir dabei die Anzahl
          aus der Function wiedergeben.
          Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

          Kommentar


          • #6
            Wie schon gesagt wurde, GROUP BY und JOIN sind deine Freunde.
            Das geht in einer Query, einfach bisschen probieren. Da lernt man auch am besten

            Kommentar


            • #7
              So, ich hab mich jetzt rangesetzt. Was ich geschafft habe: Die Inserate in einer Kategorie gleich mitzuzählen. Was ich nicht geschafft habe: Auch die Inserate in Unterkats zu zählen.

              Mein Ansatz:
              Code:
              SELECT kats.id,kats.name, COUNT(DISTINCT links.id) AS anzahl
              	FROM tabelle_kats kats
              	LEFT JOIN tabelle_links links ON kats.id=links.kat
              	OR
              	kats.kat_darueber=links.kat
              	GROUP by id,name
              ergibt aber das gleiche wie:
              Code:
              SELECT kats.id,kats.name, COUNT(DISTINCT links.id) AS anzahl
              	FROM tabelle_kats kats
              	LEFT JOIN tabelle_links links ON kats.id=links.kat
              	GROUP by id,name
              (Der Denkfehler in meinem Ansatz ist mir schon klar geworden)
              [COLOR=darkblue].: 1+1=23 :.[/COLOR]

              Kommentar


              • #8
                Um das ganze wieder aufzuwärmen.
                Wenn du nur eine Ebene hast ( bei den Kategorien ) Kannst Du mit select count(*) arbeiten
                Was wenn ich mehr Ebenen habe (bis zu 3, also Kat -> Unterkat -> Unterunterkat)?

                Kann man da überhaupt noch in Echtzeit zusammenzählen ohne den Server in die Knie zu zwingen?
                [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                Kommentar

                Lädt...
                X