[SQL-Abfrage] Problem mit Subselect

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

  • [SQL-Abfrage] Problem mit Subselect

    Also ich hab n kleines Problem. Ich will die 30 aktuellsten Artikel auslesen. es dürfen von diesen 30 Artikeln aber nur höchstens drei Artikel in der selben Produktgruppe sein. Mein Problem ist die limitierung der Produktgruppe ich bekomms einfach nicht hin. Ich sitz bestimmt schon seit 2 Stunden im phpmyadmin und fummle an dem Select rum.

    Es gibt über 500 Produktgruppen.

    Also hier ist mal der Select den ich bisher hab er gibt mir leider nur 12 Artikel aus weiß auch nicht warum.

    PHP-Code:

    SELECT shop_artikel
    .id,shop_artikelbeschr.artikelBez,shop_artikel.produktgruppeID 
    FROM shop_artikel 
    INNER JOIN shop_artikelbeschr ON shop_artikel
    .id shop_artikelbeschr.artikelID 
    INNER JOIN shop_preise ON shop_artikel
    .id shop_preise.artikelID 
    WHERE sprachID 

    AND shop_artikel.wird_angezeigt '1' 
    AND shop_preise.preis_VK 0
    AND shop_artikel.bruttogewicht 
    AND shop_artikel.abmess_l 0
    AND shop_artikel.abmess_b 
    AND shop_artikel.abmess_h 
    AND shop_artikelbeschr.langtext IS NOT NULL 
    AND shop_artikel.produktgruppeID 
    IN 
    ('SELECT DISTINCT shop_artikel.produktgruppeID FROM shop_artikel LIMIT 0,3'
    GROUP BY shop_artikelbeschr.langtext 
    ORDER BY shop_artikel
    .id DESC LIMIT 0,30 
    Lurchi ! Lurchi ! Lurchi !

  • #2
    Er gibt dir wahrschl. nur 12 Artikel aus, weil du entweder

    a) alles per GROUP BY zusammengefasst hast oder
    - viel wahrscheinlicher
    b) deine WHERE-Bedingungen nicht auf mehr Datensätze zutreffen.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Ne kann nicht sein weil wenn ich ohne subselect arbeite gibt er mir 30 Artikel aus
      Lurchi ! Lurchi ! Lurchi !

      Kommentar


      • #4
        Eben. Und im Subselect holst du 3 verschiedene Produktgruppen und wählst dann aus diesen 3 Produktgruppen deine Produkte im richtigen Select aus. Das IN gehört schließlich auch mit zum WHERE.
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          hmm ist mir jetzt klar nur nicht wie ich den Select umbauen muss
          Lurchi ! Lurchi ! Lurchi !

          Kommentar


          • #6
            Also immernoch dasselbe Problem ich weiß nicht was ich im Subselect machen muss das mir die 30 neusten Artikel von denen höchstens 3 aus einer Produktgruppe kommen dürfen ausgegeben werden.
            Ich weiß echt nicht mehr weiter!!!

            Also hier nochmal der aktuelle SELECT:

            PHP-Code:

            SELECT shop_artikel
            .id,shop_artikelbeschr.artikelBez,shop_artikelbeschr.langtext,shop_artikel.produktgruppeID 
            FROM shop_artikel INNER JOIN shop_artikelbeschr ON shop_artikel
            .id shop_artikelbeschr.artikelID 
            INNER JOIN shop_preise ON shop_artikel
            .id shop_preise.artikelID 
            WHERE sprachID 

            AND shop_artikel.wird_angezeigt '1' 
            AND shop_preise.preis_VK 
            AND shop_artikel.bruttogewicht 
            AND shop_artikel.abmess_l 
            AND shop_artikel.abmess_b 
            AND shop_artikel.abmess_h 
            AND shop_artikelbeschr.langtext IS NOT NULL 
            AND produktgruppeID 
            IN 
            ('SELECT prdouktgruppeID FROM shop_artikel'
            GROUP BY shop_artikelbeschr.langtext 
            ORDER BY shop_artikel
            .id 
            DESC LIMIT 0
            ,30 
            Lurchi ! Lurchi ! Lurchi !

            Kommentar


            • #7
              Und das Subselect steht bei Dir wirklich in Anführungszeichen?
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Ja aber ich habs jetzt gelöst mit zwei selects und ner whileschleife
                Lurchi ! Lurchi ! Lurchi !

                Kommentar


                • #9
                  Der Subselect darf nicht in Anführungszeichen.

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar

                  Lädt...
                  X