marc: werte filtern

hi ich möchte nach einer sql abfrage die werte erneut filtern und zwar nach der row pn_language

bisher sieht die source so aus

$sql = "SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_ihome = 0 ORDER BY pn_sid DESC";
 $result = $dbconn->SelectLimit($sql,$headline_limit);

ich brauche aber nur diejenigen die in der pn_language 'deu' stehen haben. zuerst habe ich

SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language = 'deu' AND WHERE pn_ihome = 0 ORDER BY pn_sid DESC

ausprobiert. produziert aber nur einen mysql error anschliessend auch die variante mit like

jetzt frage ich mich ob ich vielleicht nachträglich noch nach deu filtern kann z.b.

$sql = "SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_ihome = 0 ORDER BY pn_sid DESC";
$filter_sql = UND HIER WIRD DANN SQL NACH DEU GEFILTERT, ABER KEINE AHNUNG WIE
 $result = $dbconn->SelectLimit($filter_sql,$headline_limit);

ich habe schon gesucht wie hund aber bisher nix gefunden

vielen dank im vorraus
 marc

  1. Hi Marc,

    SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language = 'deu' AND WHERE pn_ihome = 0 ORDER BY pn_sid DESC

    in diesem Statement liegt der Fehler im erneuten WHERE
    So wäre es richtig:

    SELECT a, b FROM tablename WHERE c = 'deu' AND d = 0 ORDER BY...

    Gruß
    annA

    1. hi

      SELECT a, b FROM tablename WHERE c = 'deu' AND d = 0 ORDER BY...

      habe ich auch schon hinter mir

      SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language = "deu" AND pn_ihome = 0 ORDER BY pn_sid DESC

      fehlermeldung kommt prompt

      1. Hi,

        SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language = "deu" AND pn_ihome = 0 ORDER BY pn_sid DESC

        Schreibe statt
        WHERE pn_language = "deu" AND pn_ihome = 0...
        einfach mal
        WHERE pn_language = 'deu' AND pn_ihome = '0'...

        Gruß,
        small-step

        1. Hi small-step,

          WHERE pn_language = 'deu' AND pn_ihome = '0'...

          pn_ihome ist vom Typ int (oder tinyint, das habe ich gerade
          vergesssen :o) und sollte AFAIK nicht in Hochkommata geschrieben
          werden

          Gruß
          annA

          1. Hi,

            WHERE pn_language = 'deu' AND pn_ihome = '0'...
            pn_ihome ist vom Typ int (oder tinyint, das habe ich gerade
            vergesssen :o) und sollte AFAIK nicht in Hochkommata geschrieben
            werden

            gut, wie auch immmer, du solltest innerhalb einer SQL-Anweisung lediglich Anführungszeichen verwenden wenn du Variablen einfügst, also z.B. WHERE pn_language = '".$deu."', da die Anweisung hier unterbrochen wird. Ich denke das ist das Problem, kann das sein?

            Gruß,
            small-step

            1. also z.B. WHERE pn_language = '".$deu."', da die Anweisung hier unterbrochen wird. Ich denke das ist das Problem, kann das sein?

              ? ne ich habe hier doch kein php sondern mysql befehl

              wenn ich das als php haben wollte dann wäre das bei einer ausgabe mit echo richtig aber ich mache hier eine abfrage von festen werten $deu ist ja keine variable sondern ein wert der drin steht.

              $sql = "SELECT * FROM bla bla....";

              oder habe ich dich missverstanden?

              1. Hi,

                $sql = "SELECT * FROM bla bla....";
                oder habe ich dich missverstanden?

                ja, hast du :-)

                Wie du schon geschrieben hast, du schreibst die Anweisung folgendermaßen:
                $sql = "SELECT * FROM bla bla...";
                in deiner Anweisung steht jetzt aber
                $sql = "SELECT * ... WHERE bla = "deu" AND...".
                Verstehst du was ich sagen möchte? Die Anweisung startet mit einem Anführungszeichen und endet auch wieder damit. Du kannst nicht einfach zwischendrin ein Anführungszeichen einsetzen.

                Gruß,
                small-step

                1. hi

                  Verstehst du was ich sagen möchte? Die Anweisung startet mit einem Anführungszeichen und endet auch wieder damit. Du kannst nicht einfach zwischendrin ein Anführungszeichen einsetzen.

                  ja das ist mir schon klar, aber das habe ich auch nicht gemacht, das war nur ein versuch

                  nun funzt es und das problem ist gelöst

                  $sql = "SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM nuke_stories WHERE pn_language = 'deu' AND pn_ihome =  '0' ORDER  BY pn_sid DESC ";

          2. hi

            vergesssen :o) und sollte AFAIK nicht in Hochkommata geschrieben

            was ist AFAIK?

        2. hi

          danke für die antwort

          WHERE pn_language = "deu" AND pn_ihome = 0...
          einfach mal
          WHERE pn_language = 'deu' AND pn_ihome = '0'...

          habe ich auch schon probiert :-) funktioniert auch nicht

  2. Hi Marc,

    ich brauche aber nur diejenigen die in der pn_language 'deu' stehen haben. zuerst habe ich

    SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language = 'deu' AND WHERE pn_ihome = 0 ORDER BY pn_sid DESC

    ausprobiert. produziert aber nur einen mysql error

    welchen?

    Ist da nicht ein WHERE zu viel, die Verknüpfungen nach einem Where werden nur noch mit AND oder OR gestaltet, das Where ist nur einmal von Nöten.

    ciao
    romy

    1. ausprobiert. produziert aber nur einen mysql error
      welchen?

      You have an error in your SQL syntax near '[stories] WHERE pn_language =  "deu" AND pn_ihome = 0 ORDER  BY pn_sid DESC  LIM' at line 1

      Ist da nicht ein WHERE zu viel, die Verknüpfungen nach einem Where werden nur noch mit AND oder OR gestaltet, das Where ist nur einmal von Nöten.

      ja ich habe auch schon

      SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM $pntable[stories] WHERE pn_language =  "deu" AND pn_ihome = 0 ORDER  BY pn_sid DESC

      probiert, aber das produziert den oberen error

      pn_language ist varchar
      pn_ihome ist tinyint

      1. Hi,

        You have an error in your SQL syntax near '[stories] WHERE pn_language =  "deu" AND pn_ihome = 0 ORDER  BY pn_sid DESC  LIM' at line 1

        dann sagt er Dir doch womit er nicht klarkommt.
        nämlich mit Deinem Tabellenname, wie kommst Du denn auf den Ausdruck mit den eckigen Klammmern?

        ciao
        romy