Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

WHERE clausel und left join problem

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von brathein, 4 April 2013.

  1. brathein

    brathein Neuer Benutzer

    hallo,

    ich habe irgendwie einen hänger ..
    folgendes problem.

    ich habe zwei tabellen
    1. `rssfeed`
    in der `rssfeed` sind feedadressen gespeichert, in der `rssfeed` tabelle sind 82 einträge

    2. `savedfeed`
    in der `savedfeed` ist gespeichert ob ich die rssadresse für mich schon gespeichert habe

    soweit geht das auch super

    Code:
     
    SELECT
    rf.id,
    rf.name,
    rf.description,
    rf.land,   
    rf.district,
    rf.city,
    rf.category,
    rf.user_id ,
    sf.userid as saved
     
    FROM rssfeed as rf
     
    left join (
     
    SELECT * FROM savedfeed WHERE userid = 1
     
    ) as sf
     
    on rf.id = sf.sfeedid
     
    LIMIT 40
     
    

    mit der ersten anfrage bekomme ich meine 40 einträge

    dann wird irgendwann wieder angefragt wobei ich jetzt ab dem 40 eintrag abfragen möchte
    im meinem fall ist der 40 eintrag die rf.id `132` .. ab diesem eintrag möchte ich die nächsten 40 einträge aus der DB abfragen

    und da ist das problem:
    ?? wo muss ich die WHERE clausel richtig setzten ??


    Code:
     
    SELECT
    rf.id,
    rf.name,
    rf.desc,
    rf.land,   
    rf.dist,
    rf.city,
    rf.cat,
    rf.user_id ,
    sf.userid as saved
     
    FROM rssfeed
    WHERE rf.id > 132 as rf
     
    left join
    (
    SELECT * FROM savedfeed WHERE userid = 1
    ) as sf
    on rf.id = sf.sfeedid
    LIMIT 40
     
    

    in diesem fall bekomme ich immer fehler.
    Fehlermeldung sieht wie folgt aus:


    bin über jede hilfe dankbar.
     
  2. brathein

    brathein Neuer Benutzer

    ach .. ich bin ein horn ...
    ich habe es

    Code:
    SELECT
    rf.id,
    rf.name,
    rf.desc,
    rf.land, 
    rf.dist,
    rf.city,
    rf.cat,
    rf.user_id ,
    sf.userid as saved
     
    FROM ( SELECT * FROM rssfeed WHERE id > 132 ) as rf
     
    left join
    (
    SELECT * FROM savedfeed WHERE userid = 1
    ) as sf
    on rf.id = sf.sfeedid
    LIMIT 40
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Nicht ganz korrekt, besser wäre es

    • mit einem ORDER BY vor dem Limit zu arbeiten, Du kannst und darfst Dich nicht drauf verlassen, daß die Daten immer sortiert rausfallen
    • schau Dir LIMIT in verbindung mit OFFSET an, das wurde als Lösung für Probleme wie Deines geschaffen
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden