romy: PostgreSQL -> kurzer Check bitte

Hi,

Also ich hab jetzt wohl Tomaten auf den Augen oder sonstige Leiden, jedenfalls will sich mir der Fehler nicht erschliessen. Bitte erlöst mich jemand!

<SQL-Anweisung>
 SELECT l.licencenumber, w.url, u.screenshot, u.activ, w.category FROM website w, licence l, upload u WHERE l.wid=3 AND w.uid=1 AND w.wid=l.wid AND w.uid=u.uid AND l.wid = u.wid AND w.deleted='f' UNION SELECT l.licencenumber, w.url,'','',w.category FROM website w, licence l WHERE l.wid=3 AND w.uid=1 AND w.wid=l.wid AND w.deleted='f' AND NOT EXISTS (SELECT * FROM upload u WHERE u.wid = l.wid)
</SQL-Anweisung>

<Fehler>
Warning: PostgreSQL query failed: ERROR: Bad boolean external representation '' in blablabla
</Fehler>

<Erklärung>
das Union ist notwendig damit ich auch die websites erwische, die noch keinen screenshot haben.
</Erklärung>

danke, wenn sich da jemand durchwühlt!
ciao
romy--
DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN

->Alles ist gut wenn es aus Schokolade ist

  1. Sup!

    das Union ist notwendig damit ich auch die websites erwische, die noch keinen screenshot haben.

    Wuerde da nicht ein outer join reichen?

    Gruesse,

    Bio

    --
    Ich bin ein Mobber - mein Posting tut mir leid! EHRLICH!!!
    1. Hi,

      Wuerde da nicht ein outer join reichen?

      ist sehr wohl Möglich, aber den kriege ich erst Recht nicht zusammengebastelt:

      SELECT l.licencenumber, w.url, u.screenshot, u.activ, w.category FROM website w LEFT JOIN licence l LEFT JOIN upload u WHERE l.wid=3 AND w.uid=1 AND w.wid=l.wid AND w.uid=u.uid AND l.wid = u.wid AND w.deleted='f'

      der parse errror soll irgendwo bei where sein...
      hab leider left join (ist dasselbe wie outer join laut meinem Buch) noch nie verwendet und weiss gerade nicht wie es gehen soll

      ciao
      romy

      --
      DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
      ->Alles ist gut wenn es aus Schokolade ist
      1. Hallo,

        hab leider left join (ist dasselbe wie outer join laut meinem Buch) noch nie verwendet und weiss gerade nicht wie es gehen soll

        http://www.postgresql.org/docs/view.php?version=7.3&file=queries-table-expressions.html#QUERIES-FROM sollte da weiterhelfen.

        BTW: Irgendwie verstehe ich nicht, wie jemand solche Statements entwickeln kann, ohne sie entsprechend zu formatieren((ungetestet):

        SELECT l.licencenumber, w.url, u.screenshot, u.activ, w.category
          FROM website w
           LEFT JOIN licence l on w.wid = l.wid
           LEFT OUTER JOIN upload u w.uid = u.uid
          WHERE l.wid=3
            AND w.uid=1
            AND w.deleted='f'

        So ist das ja viel klarer zu verstehen, oder?

        Grüße
          Klaus

        1. Hi,

          BTW: Irgendwie verstehe ich nicht, wie jemand solche Statements entwickeln kann, ohne sie entsprechend zu formatieren((ungetestet):

          hast ja recht...
          habe mich noch nicht an eine saubere Schreibweise gewöhnt, da ich eigentlich sehr wenig damit arbeite und meist nimmt man sich ja den zuerst gelernten Stil an. (Der war dann wohl nicht so gut  ;))
          Aber ich glaube ich werde mir in Zukunft mal die Mühe machen.
          Ich war gestern nur fertig, weil ständig Fehlermeldungen kamen, wo der Ursprung sich hartnäckig verborgen gehalten hat (auf den ersten Blick) und dabei hatte ich eigentlich nur was Kleines verändert.
          Naja...

          Wie war das Ordnung ist das halbe Leben

          ciao
          romy

          --
          DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
          ->Alles ist gut wenn es aus Schokolade ist
  2. Hi,

    <SQL-Anweisung>
    SELECT l.licencenumber, w.url, u.screenshot, u.activ, w.category FROM website w, licence l, upload u WHERE l.wid=3 AND w.uid=1 AND w.wid=l.wid AND w.uid=u.uid AND l.wid = u.wid AND w.deleted='f' UNION SELECT l.licencenumber, w.url,'','f',w.category FROM website w, licence l WHERE l.wid=3 AND w.uid=1 AND w.wid=l.wid AND w.deleted='f' AND NOT EXISTS (SELECT * FROM upload u WHERE u.wid = l.wid)
    </SQL-Anweisung>

    wenn das Feld boolean ist, kann man nicht '' schreiben sondern sollte vorgelegen mit 'f' zB.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist