Ankündigung

Einklappen
Keine Ankündigung bisher.

Kategorieabfrage

Einklappen

Neue Werbung 2019

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

  • Kategorieabfrage

    Guten Abend,

    Code:
    CREATE TABLE `objekte` (
      `ID` int(11) NOT NULL,
      `hauptobjektID` int(11) DEFAULT NULL,
      `objektart` tinyint(4) NOT NULL COMMENT '1 = Haupt, 2 = Unterobjekt',
      `bezeichnung` varchar(100) COLLATE utf8_bin NOT NULL,
      `nummer_intern` int(11) NOT NULL,
      `nummer_hersteller` int(11) NOT NULL,
      `laenge` decimal(5,2) NOT NULL,
      `breite` decimal(5,2) NOT NULL,
      `hoehe` decimal(5,2) NOT NULL,
      `gewicht` decimal(10,2) NOT NULL,
      `kennzeichen` varchar(20) COLLATE utf8_bin NOT NULL,
      `aktiv` tinyint(4) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    Ist es mit einer Abfrage möglich, alle Hauptkategorien und deren Unterketegorien abzufragen, sodas ich ich mittels Smarty die Daten sauber wie folgt ausgegeben bekommen?

    Tiere
    Hund
    Katze
    Maus

    Städte
    Köln
    Bonn
    Berlin

    Die Objektart 1 ist eine Hauptkategorie und die Objektart 2 eine Unterkategorie.

    Mein Ansatz:

    Code:
    SELECT
    *
    FROM `objekte` AS o1
    LEFT JOIN objekte AS o2 ON o2.hauptobjektID = o1.ID
    Group BY o1.ID


  • #2
    Hab es hinbekommen:

    ok so?

    Code:
    SELECT
    *,
    o1.bezeichnung AS hauptbezeichnung,
    o1.objektart AS objektart_haupt
    FROM `objekte` AS o1
    LEFT JOIN objekte AS o2 ON o2.hauptobjektID = o1.ID
    Group BY o1.ID
    Jetzt habe ich aber mal eine anderere Frage. Ich hätte es lieber, dass wenn man auf die Hauptkategorie klickt, erst dann die Unterkategorien aufploppen. Ich arbeite mit Smarty. Könnte das ohne die Abfrage ja mit Jquery lösen. Aber wie könnte mna das mit einer Abfrage lösen? Macht das Sinn und klappt das? Weil möchte nicht, dass 5000 Zeilen mit Kategorie und den jeweiligen Unterkategorien auf einmal angezeigt werden.

    Kommentar


    • #3
      Zitat von truemaster Beitrag anzeigen
      Guten Abend,
      ...

      Mein Ansatz:

      Code:
      SELECT
      *
      FROM `objekte` AS o1
      LEFT JOIN objekte AS o2 ON o2.hauptobjektID = o1.ID
      Group BY o1.ID
      Und warum gibst du nicht deine Daten (Tiere, Hunde usw.) in deiner Tabelle ein und führst die Abfrage dann aus?

      Kommentar


      • #4
        Zitat von truemaster Beitrag anzeigen
        Hab es hinbekommen:

        ok so?

        Code:
        SELECT
        *,
        o1.bezeichnung AS hauptbezeichnung,
        o1.objektart AS objektart_haupt
        FROM `objekte` AS o1
        LEFT JOIN objekte AS o2 ON o2.hauptobjektID = o1.ID
        Group BY o1.ID
        Jetzt habe ich aber mal eine anderere Frage. Ich hätte es lieber, dass wenn man auf die Hauptkategorie klickt, erst dann die Unterkategorien aufploppen. Ich arbeite mit Smarty. Könnte das ohne die Abfrage ja mit Jquery lösen. Aber wie könnte mna das mit einer Abfrage lösen? Macht das Sinn und klappt das? Weil möchte nicht, dass 5000 Zeilen mit Kategorie und den jeweiligen Unterkategorien auf einmal angezeigt werden.
        Ich glaube nicht, daß das funktionieren kann, ob mit oder ohne Smarties.
        Das select * solltest du auf jeden Fall rausmachen.

        Kommentar


        • #5
          Zitat von truemaster Beitrag anzeigen
          Hab es hinbekommen:
          Sieht für mich nicht so aus. Das GROUP BY hat da nix zu Suchen. Dann solltest du sowas zurückbekommen:

          Tiere Hund
          Tiere Katze
          Tiere Maus
          Städte Köln
          Städte Bonn
          Städte Berlin

          Das musst du dann mit PHP(?) auseinandernehmen.

          Zitat von truemaster Beitrag anzeigen
          Könnte das ohne die Abfrage ja mit Jquery lösen. Aber wie könnte mna das mit einer Abfrage lösen? Macht das Sinn und klappt das? Weil möchte nicht, dass 5000 Zeilen mit Kategorie und den jeweiligen Unterkategorien auf einmal angezeigt werden.
          Mach doch einfach zwei Abfragen. Einmal für die Hauptkategorie, und einmal für die Unterkategorein. Alternativ kannst du den ersten Query auch erweitern... in die JOIN Bedingung fügst du dann noch die aktuell ausgewählte Kategorie ein. Dann kommt sowas zurück: (wenn Tiere ausgewählt)

          Tiere Hund
          Tiere Katze
          Tiere Maus
          Städte NULL

          Kommentar

          Lädt...
          X