Distinct + Regexp

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

  • Distinct + Regexp

    hallo,
    ich hab da ein kleines problem:

    ich arbeite gerade an einem kleinen b2b shop für t-shirts.

    für die startseite möchte ich eine bestimmte anzahl artikel zufällig ausgeben. allerdings soll kein grundartikel doppelt vorkommen. ein auszug aus der tabelle:
    INSERT INTO bas_price VALUES ('B100ASL', 'AS', 'L', ...);
    INSERT INTO bas_price VALUES ('B100ASM', 'AS', 'M',...);
    INSERT INTO bas_price VALUES ('B10ASS', 'AS', 'S', ...);
    INSERT INTO bas_price VALUES ('B200ASXL', 'AS', 'XL', ...);
    INSERT INTO bas_price VALUES ('B200ASXXL', 'AS', 'XXL',...);
    ...
    meine abfrage:
    PHP-Code:
            $sql 'SELECT
                        DISTINCT (artnr REGEXP "B[0-9]{2,3}") listart,
                        artnr,
                        ps1
                    FROM price
                    ORDER BY rand()
                    LIMIT 4'
    ;
    /* plan b ... ergebnis nur 1 datensatz kommt zurück
            $sql = 'SELECT
                        artnr,
                        ps1
                    FROM price
                    GROUP BY (artnr REGEXP "B[0-9]{2,3}")
                    ORDER BY rand()
                    LIMIT 4';
    */ 
    soweit so gut, es funktioniert. ABER trotz 'LIMIT 4' erhalte ich nicht immer 4 (einzigartige) artikel in der ausgabe. es sind auch mal 3 oder 2.

    es sollte also zB => B10, B620, B100, B200 vorkommen aber nicht B10, B620, B10, B200 (was allerdings passiert) ... ich bin verwirrt oder kann ich DISTINCT nicht mit REGEXP zusammenfassen?

    PS: DB MySQL 4.0.12
    Kissolino.com

  • #2
    hast du schon versucht:
    PHP-Code:
    $sql 'SELECT
                        DISTINCT listart,
                        artnr,
                        ps1
                    FROM price
                    WHERE artnr REGEXP "B[0-9]{2,3}"
                    ORDER BY rand()
                    LIMIT 4'

    Kommentar


    • #3
      Original geschrieben von asp2php
      hast du schon versucht:
      nö ... imho bringt das nix,
      a) listart ist nur ein alias und nicht existent
      b) REGEXP liefert nur 0 oder 1

      die aufsplittung erfolgt später nochmal per php ... *bing* beim schreiben fällt mir dann jedoch ein, warum das sql-statement 'grütze' ist ... DISTINCT auf '1' liefert logischerweise auch doppelte datensätze *autsch*

      thema durch, ich lös das anders
      EDIT:
      @asp

      das statement funktioniert, liefert aber dasselbe ergebnis ... also auch doppelte, ich hab nix, wonach ich gruppieren kann?!

      Zuletzt geändert von Wurzel; 17.01.2005, 23:02.
      Kissolino.com

      Kommentar


      • #4
        zu a). Fehler von mir, nimm raus
        zu b). probieren und sich wundern (IMHO)

        Kommentar


        • #5
          jepp wundern ... siehe oben mein edit
          Kissolino.com

          Kommentar


          • #6
            Sh*t, gib mir mal einen Dump zum Ausprobieren

            Kommentar


            • #7
              dein ehrgeiz in allen ehren ... ich machs jetzt umgekehrt und frickel das dingen mit php auseinander. aber danke für die anteilnahme
              Kissolino.com

              Kommentar


              • #8
                Geizhals

                Kommentar

                Lädt...
                X