Kategorie nur anzeigen wenn Inhalt

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

  • Kategorie nur anzeigen wenn Inhalt

    Guten Abend

    Heute habe ich für mich ein etwas schwieriges Problem, zumal die einzige lösung die mir aktuell einfällt für die Performance (zumindest nach meiner überlegung) nicht so gut wäre.

    Ich habe eine Filmliste mit Kategorien und Unterkategorien. Ihr könnt euch dies wie Shopkategorien vorstellen. Das ganze ist mit parentID und childlist gemacht. Dies ist gar kein Problem.

    Nun hätte ich aber gerne, dass eine Kategorie nur dann angezeigt wird, wenn in dieser Kategorie ein Film drin ist oder in einem der Unterkategorien ein Film drin ist.

    Zuerst habe ich gedacht, ich mache mir einfach bei jeder Kategorie noch eine SQL Abfrage als SELECT COUNT(movieID) AS count WHERE inactive = 0 AND movieCategoryID IN ... Bei 100 Kategorien oder mehr wäre dies dann aber doch 100 oder mehr abfragen.
    Ein Subquery wüsste ich grad nicht wie, würde aber wohl von der Performance her ähnlich hart ausfallen.

    Als letztes würde mich höchstens noch einfallen einen Array mit einer SQL Abfrage zu generieren in Form von $anzahlFilme[movieCategoryID]. So habe ich jedoch nicht die anzahl aller Filme in den Unterkategorien (childlist)

    Ich nehme an, dass letzte wäre von der Performance am besten. Aber ggf gibt es ja noch eine andere/bessere lösung.

    Gruss und Danke

    Koda
    Zuletzt geändert von Koda; 26.04.2014, 19:52.

  • #2
    . . . Nun hätte ich aber gerne, dass eine Kategorie nur dann angezeigt wird, wenn in dieser Kategorie ein Film drin ist . . .
    Hi Koda,

    wenn die Kategorien in einer separaten Tabelle stehen (würden), sollte das kein Problem sein.

    Kurzform:

    PHP-Code:
    select titelgenres
    from filme
    genre
    where filme
    .genre genre.id 
    Gruß
    Günni

    Kommentar


    • #3
      Guten Abend Günni

      Vielen Dank für deine Antwort. Vielleicht sehe ich da etwas den Wald vor lauter bäumen nicht mehr.

      Die Tabellen Abgekürzt.
      kategorien
      movieCategoryID
      movieCategoryName
      parentID
      childlist

      Inhalt:
      1 | Kategorie 1 | 0 | 2,3
      2 | Kategorie 2 | 1 | 0
      3 | Kategorie 3 | 1 | 0

      filme
      movieID
      movieName
      movieCategoryID

      Das childlist ist sicher nicht die beste Variante.

      Nun ist es so, dass z.B. in Kategorie 2 Filme sind, in Kategorie 3 keine sind.
      so soll er mir Kategorie 1 und Kategorie 2 anzeigen. Wenn z.B. aber in beiden keine Filme sind, sollte er auch die Kategorie 1 nicht anzeigen. Deshalb ist dies ja etwas problematisch da dort ja kein Film die entsprechende movieCategoryID hätte egal ob ein Film in der Unterkategorie ist oder nicht.

      Mit deiner Variante würde er doch die Hauptkategorie nicht beachten oder?

      Gruss

      Koda

      Kommentar


      • #4
        Zitat von Koda Beitrag anzeigen
        Das childlist ist sicher nicht die beste Variante.
        Nein, ist es definitiv nicht.

        Also überarbeite dein Datenmodell jetzt, bevor du damit in noch mehr Probleme rennst. Dein Stichwort lautet Normalisierung.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hi

          Vielen Dank.

          OFF TTOPIC:
          Die childlist wird nur verwendet um später eine weitere SQL Abfrage zu starten mit "WHERE field IN ($myArray['childlist'])
          Wenn ich nun eine Tabelle Childlist generiere mit
          id | movieCategoryID | movieSubCategoryID
          Wie würde dann eine SQL Abfrage aussehen anstelle meines IN ()?
          OT END

          Wenn ich die Datenbank struktur so ändere würde das auch mein Problem aus dem Startbeitrag lösen? Ich sehe irgendwie nicht den Vorteil darin ob ich nun die childlist nutze oder diese in eine extra Tabelle auslagere.

          Vielen Dank für jede Hilfe.

          Gruss

          Koda

          Kommentar


          • #6
            Zitat von Koda Beitrag anzeigen
            Wie würde dann eine SQL Abfrage aussehen anstelle meines IN ()?
            Stichwort: JOIN
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Sorry habe versehentlich unterhalb einen neuen Beitrag erstellt statt bearbeitet.
              Zuletzt geändert von Koda; 28.04.2014, 18:46.

              Kommentar


              • #8
                Hi

                Ok. Vielen Dank.

                Gruss

                Koda
                Zuletzt geändert von Koda; 29.04.2014, 13:27.

                Kommentar

                Lädt...
                X