fossi: MySQL-Select Problem

Hallo zusammen,

habe ein kleines Problem. Ich bin gerade dabei, meine Navigation aus einer MySQL-Tabelle zu holen.

Ich habe vie Spalten erstellt:

  • NAME
  • KATEGORIE
  • NUMMER
  • SEITE

Jetzt würde ich gerne alle Seiten anzeigen lassen außer diese mit der Kategorie '6' und hier allerdings auch nur ab NUMMER >= '2'.

Wie kriege ich das hin? muss ich da mit klammern arbeiten?

Alle Seiten anzeigen außer der KATEGORIE '6' ist ja kein Problem:

SELECT * FROM $dbtable WHERE kat != '6' ORDER BY kat,nr,seite

nur wie gesagt, höher oder gleich 2 (Nummer) ist das problem.

Habt ihr einen rat?

ciao fossi

  1. probiers mal so:

    SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite

    1. servus

      SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite

      wenns nur so einfach wäre ;-( aber so würde er ja nur die seiten rausholen die NICHT die kategorie 6 haben und bei nummer höher 2 sind.  Es sollte aber nur innerhalb der Kategorie 6 höher sein und nicht auf alle kategorien höher 2.

      gruß fossi

      1. Hi,

        SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite
        Es sollte aber nur innerhalb der Kategorie 6 höher sein und nicht auf alle kategorien höher 2.

        mit anderen Worten: Entweder ist die Kategorie ungleich '6', oder die Nummer größer '2'. Wieso speicherst Du eigentlich Zahlen als Zeichenketten?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Servus

          mit anderen Worten: Entweder ist die Kategorie ungleich '6', oder die Nummer größer '2'.

          Nicht ganz um es ein wenig verständlicher zu machen hier mal eine Beispielnavigation:

          name            kat     nr     seite
          ------------------------------------
          home            1       1      1
          galerie         2       1      1
          -frühling       2       2      1
          -sommer         2       3      1
          -winter         2       4      1
            -winter#02    2       4      2
          kontakt         3       1      1

          Angenommen, ich möchte nun alle Seiten filtern außer Kategorie '6' ab Nummer '2' Somit müsste mySQL mir folgende Seiten liefern:

          name            kat     nr     seite
          ------------------------------------
          home            1       1      1
          galerie         2       1      1
          kontakt         3       1      1

          Wieso speicherst Du eigentlich Zahlen als Zeichenketten?

          ich habe die zahlen nicht als zeichenketten gespeichert, sie sind als smallint angegeben.

          ich hoffe, es ist so besser erklärt.

          ciao fossi

          1. Hi,

            Nicht ganz um es ein wenig verständlicher zu machen hier mal eine Beispielnavigation:

            ähm, könntest Du das Beispiel eventuell noch etwas aufbereiten? "WHERE nr < 2" wäre hier eine absolut ausreichende Bedingung: vor allem weil es kein kat=6 gibt.

            Wieso speicherst Du eigentlich Zahlen als Zeichenketten?
            ich habe die zahlen nicht als zeichenketten gespeichert, sie sind als smallint angegeben.

            Warum vergleichst Du sie dann mit Zeichenketten? 10 > 2, aber '10' < '2'.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. servus

              ähm, könntest Du das Beispiel eventuell noch etwas aufbereiten? "WHERE nr < 2" wäre hier eine absolut ausreichende Bedingung: vor allem weil es kein kat=6 gibt.

              das war ja wie gesagt nur ein beispiel - nicht das originale - was hier bei dem beispiel die 2 ist, meinte ich eigentlich als 6 - wollte nur nicht noch mehr seiten in dem beispiel einbringen.

              Warum vergleichst Du sie dann mit Zeichenketten? 10 > 2, aber '10' < '2'.

              schon erledigt - aber daran liegt es ja nicht. hast du eine ahnung?

              1. Hi,

                das war ja wie gesagt nur ein beispiel - nicht das originale - was hier bei dem beispiel die 2 ist, meinte ich eigentlich als 6 - wollte nur nicht noch mehr seiten in dem beispiel einbringen.

                nimm's mir bitte nicht übel, aber: Häh?

                Bitte formuliere doch mal die Bedingung, die Du gerne hättest, in verständlichem Deutsch, unter Beachtung _aller_ denkbaren Fälle.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. ich nicht ganz verstehen was hier los. schreib nochmal genau was du willst, dann kann ich evtl. weiterhelfen. chichi

                  1. servus nochmal,

                    ich nehme das gleiche beispiel wie vorher. Also wie man an der DB-Struktur erkennen kann, umfasst eine kategorie immer einen bereich wie zum beispiel den bereich Galerie. Unter der Galerie gibt es die Seiten Frühling, Sommer und Winter (Winter sogar mit 2 weiteren Unterseiten, weil zum Beispiel ganz viele Bilder da waren).

                    name            kat     nr     seite
                    ------------------------------------
                    home            1       1      1
                    projekte        2       1      1
                     - aktuell      2       2      1
                     - fertig       2       3      1
                    referenzen      3       1      1
                    hilfe           4       1      1
                    über uns        5       1      1
                    galerie         6       1      1
                    -frühling       6       2      1
                    -sommer         6       3      1
                    -winter         6       4      1
                      -Zweite Seite 6       4      2
                      -Dritte Seite 6       4      3
                    kontakt         7       1      1

                    Ich möchte nun, dass in meiner Navigation aber nur die untenstehenden Seite angezeigt werden und die restlichen außer betracht gelassen werden:

                    name            kat     nr     seite
                    ------------------------------------
                    home            1       1      1
                    projekte        2       1      1
                     - aktuell      2       2      1
                     - fertig       2       3      1
                    referenzen      3       1      1
                    hilfe           4       1      1
                    über uns        5       1      1
                    galerie         6       1      1
                    kontakt         7       1      1

                    wie man sieht fehlen alle galerie Seiten außer der "Galerie-Startseite". Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?

                    Ich hoffe dass es nun so besser ist ;-)

                    fragen? -> fragen!

                    ciao fossi

                    1. Hi,

                      Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?
                      Ich hoffe dass es nun so besser ist ;-)

                      keine Ahnung. Ich bin nach wie vor der Ansicht, dass ich mit [pref:t=82321&m=479442] richtig lag; lediglich die Relation hat das falsche Vorzeichen.

                      Cheatah

                      --
                      X-Will-Answer-Email: No
                      X-Please-Search-Archive-First: Absolutely Yes
                    2. Hi,

                      wie man sieht fehlen alle galerie Seiten außer der "Galerie-Startseite". Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?

                      Du willst also alle Einträge, die kat!=6 sind oder (falls kat=6 ist) nummer = 1 ist

                      also

                      WHERE kat != 6 OR nummer = 1

                      cu,
                      Andreas

                      --
                      MudGuard? Siehe http://www.Mud-Guard.de/
                      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. damit dein feld nummern versteht musst du es in der datenbank auch so anlegen:

    ich nutze statt varchar dann z.B. double oder dezimal. stelle das tabellenfeld dann mal mit phpmyadmin um.

    hoffe du kommst klar.

    chichi