Announcement

Collapse
No announcement yet.

Tabellenvergleich

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabellenvergleich

    Hallo,

    ich habe zwei Tabellen ... eine mit News und eine mit Gelesen Markierungen. Dh. für jede news wird für jeden User ein Gelesen Datensatz erzeugt.

    Nun möchte ich all die News angezeigt bekommen, zu denen kein Gelesen Datensatz besteht.

    Alles was ich bisher probiert hatte funzte nicht ...

    Danke, Sven

  • #2
    Hi Sven,

    normalerweise etwas in der Art wie:
    <PRE>
    SELECT
    *
    FROM news
    WHERE NOT EXISTS xxx IN SELECT xxx FROM gelesen WHERE User = :Username
    </PRE>

    Aber so weit ich weiß, unterstützt MySQL (noch) keine SubSelects. So spontan würde ich sagen, kopier alle news in eine temporäre Tabelle und lösch die raus, die der User schon gelesen hat.

    Oder erzeuge beim Einfügen der news schon Datensätze in der gelesen-Tabelle, aber mit einem Boolschen Wert z.B gelesen = false.
    Dann sollte folgendes funktionieren:
    <PRE>
    SELECT
    n.*
    FROM news n, gelesen g
    WHERE (g.user = :user)
    AND (n.id = g.id) // oder wie immer die Verbindung herzustellen ist, muß ja eine Id oder so was sein
    AND (g.gelesen = false)
    </PRE>

    Hab' aber selbst mit MySQL noch nicht gearbeitet, ist also theoretischer Natur...

    Joche

    Comment


    • #3
      Hi,

      in meinem Beispiel wollte ich alle die Länder finden in der Tabelle Country, auf die kein Partner referiert. Mit bischen Ummodelieren dürfte das für dein Problem auch hinhauen.

      <PRE>
      SELECT c.Code
      FROM Country c LEFT OUTER JOIN
      Partner pa ON c.ID = pa.Country RIGHT OUTER JOIN
      Country c2 ON c.ID = c2.ID
      WHERE pa.Nr IS NULL
      </PRE>

      Gruss,
      Tom Peiffe

      Comment

      Working...
      X