Announcement

Collapse
No announcement yet.

Zwei identische Fremdschlüssel

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

  • Zwei identische Fremdschlüssel

    Hallo, meine vorherige Frage wurde ja in den PostGres Bereich verschoben, aber ich denke mal, die ist eindeutig eine allgemeine SQL-Frage.

    Ich konnte das Problem allerdings noch nicht lösen:

    Ich habe eine Tabelle lager_bestellung, darin befinden sich unter anderem zwei Personen-IDs mit denen ich auf meine Personen Tabelle zugreifen kann, nämlich einmal den der die Bestellung ausgelöst hat und der, der sie entgegengenommen hat.

    Wie kann ich die Namen der Personen jetzt per Join aus der Tabelle holen, so dass ich aber die Personen eindeutig zuordnen kann?

    So in etwa sollte das aussehen, funktioniert nur leider nicht.

    Code:
    SELECT 
    datum, p1.p_name, p2.p_name, art_bezeichnung 
    FROM 
    lager_bestellung JOIN person p1 ON person.p_uid = lager_bestellung.best_besteller 
    JOIN person p2 ON person.p_uid = lager_bestellung.best_entgegen 
    JOIN artikel ON artikel.art_id = lager_bestellung.best_artikel
    WHERE art_bezeichnung LIKE '%...%'
    Kann mir bitte jemand helfen? Danke....

  • #2
    Hallo Pamparius,

    wenn Du noch dabei geschrieben, was nicht funktioniert, müssten wir nicht rätselraten...

    Soweit stimmt es, nur wenn Du einen Alias definierst, solltest Du ihn auch konsequent verwenden.

    SELECT
    datum, p1.p_name, p2.p_name, art_bezeichnung
    FROM
    lager_bestellung JOIN person p1 ON p1.p_uid = lager_bestellung.best_besteller
    JOIN person p2 ON p2.p_uid = lager_bestellung.best_entgegen
    JOIN artikel ON artikel.art_id = lager_bestellung.best_artikel
    WHERE art_bezeichnung LIKE '%...%'

    Olaf
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hi,

      ich kann es nicht testen, aber es empfiehlt sich immer die konsequente Verwendung eines Alias:

      [highlight=sql]
      SELECT
      datum
      , p1.p_name
      , p2.p_name
      , b.art_bezeichnung
      FROM lager_bestellung b
      LEFT JOIN person p1 ON p1.p_uid = b.best_besteller
      LEFT JOIN person p2 ON p2.p_uid = b.best_entgegen
      LEFT JOIN artikel a ON a.art_id = b.best_artikel
      WHERE b.art_bezeichnung LIKE '%...%'
      [/highlight]

      Weiterhin sollte es IMHO ein left join sein.
      Hoffe, es hilft etwas weiter...

      Frank

      [EDIT]...so ein Hinweis, dass während des Schreibens eine neue Antwort eingetragen wurde, wäre nicht schlecht.[/EDIT]

      Comment


      • #4
        LEFT JOIN war das Zauberwort....funktioniert einwandfrei....vielen Dank

        Comment

        Working...
        X