Announcement

Collapse
No announcement yet.

Abfrage über 2 Tabellen

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

  • Abfrage über 2 Tabellen

    Hallo,

    jetzt spiel ich mich schon seit Stunden mit einer einzigen Abfrage und bin eigentlich davon überzeugt, dass es so gehen sollte... jedoch tut es das nicht :-)
    Folgendes ist mein Problem:

    Ich habe 2 Tabellen, die 1. heißt "recipes", die 2. "payments". In der recipes sind unter anderem die Spalten id, title, description, price enthalten. In der payments lauten die Spalten id, user_id, recipe_id.

    Payments schaut derzeit so aus:
    (id) (user_id) (recipe_id)
    1 1 2
    2 2 3
    3 1 1
    4 2 4

    Nun möchte ich, dass jene Rezepte angezeigt werden, die ein Benutzer noch NICHT in der payments stehen hat, also wären das in dem Fall für den User 1 die recipe_id's 3 und 4.

    Meine Abfrage sieht so aus:
    SELECT `recipes`.`id`,
    `recipes`.`title`,
    `recipes`.`description`,
    `recipes`.`price`,
    `payments`.`user_id`,
    `payments`.`recipe_id`
    FROM `recipes`,
    `payments`
    WHERE `payments`.`user_id` = 1
    AND `recipes`.`id` != `payments`.`recipe_id`

    Funktioniert das mit dieser "einfachen" Abfrage, oder bedarf es etwas komplexerem? Ich hoffe es findet sich jemand der mir bei dieser Angelegenheit helfen kann :-)

    Lg

  • #2
    Hallo,
    sowas lässt sich leicht mit einem OUTER JOIN und einer entsprechenden Where-Bedingung lösen.

    z.B.:
    [highlight=sql]
    select ...
    from recipes r
    left outer join payments p on p.recipe_id = r.id and p.user_id = 1
    where p.id is null
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Danke! Funktioniert genau so wie ich es mir vorgestellt habe :-)

      Comment

      Working...
      X