tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
289
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SonMiko
    SonMiko SonMiko ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Hallo zusammen,

    ich versuche derzeit verzweifelt, 2 Datensätze aus einer Tabelle mit den IDs aus einer Tabelle zu verbinden.

    Das Szenario sieht folgendermaßen aus:
    Es gibt eine Tabelle in der Termine festgehalten werden.
    Diese Tabelle beinhaltet zwei IDs zu je einem User.
    Beide User kommen jedoch aus derselben Tabelle.

    Es gibt also 2 Left Joins die zur selben Tabelle führen nur eben mit anderen spalten in der Termin-Tabelle verknüpft sind (starter_id, joiner_id - nenn ich sie hier einfach mal).

    Mit einem Leftjoin ****t alles wunederbar.
    Allerdings brauche ich auch die Daten des anderen Teilnehmers.

    Da ich hierzu die Tabelle erneut befrage, ist sie nicht mehr "unique".
    Ich erteile Ihr also einen eindeutigen Bezeichner mit AS und die Abfrage funktioniert wieder - liefert jedoch trotzdem am Ende NUR die Daten des starters und nicht des Joiners.

    Meine Frage also in komprimierter Form:
    Wie kann ich 2 Datensätze aus EINER Tabelle mit einer anderen Tabelle verbinden?
    termine->user(user_a)
    termine->user(user_b)
    ?

    Hat jemand eine Idee?
    Hier mein Ansatz:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    SELECT
                                    schedule.*,
                                    user.id
                                FROM
                                    schedule
                                LEFT JOIN
                                    user
                                ON
                                    schedule.id_starter = user.id
                                LEFT JOIN
                                    user AS joiner
                                ON
                                    schedule.id_joiner = user.id

    Liebe Grüße,

    Mike
     
    Besten Gruß,

    Mike

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo Mike,

    du musst bei den zu selektierenden Feldern auch die entsprechenden Spalten des zweiten Joins angeben. \edit: Beim zweiten Join solltest du außerdem den Alias in der ON-Klausel verwenden. Also z.B. so:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    SELECT
        schedule.*,
        USER.username AS starter_username,
        joiner.username AS joiner_username
    FROM
        schedule
    LEFT JOIN
        USER
    ON
        schedule.id_starter = USER.id
    LEFT JOIN
        USER AS joiner
    ON
        schedule.id_joiner = joiner.id

    Grüße,
    Matthias
    Geändert von Matthias Reitinger (22.09.10 um 13:44 Uhr)
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Avatar von SonMiko
    SonMiko SonMiko ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Okay funktioniert und hat schonmal sehr geholfen danke - nun möchte ich allerdings noch eingrenzen.
    Es sollen nur Datensätze angezeigt werden wo joiner.id = 6 ist.
    HAVING, WHERE funktioniert beides nicht, weder bei schedule. noch bei joiner. ...
    Dazu noch eine Idee?
     
    Besten Gruß,

    Mike

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    WHERE funktioniert. Du wendest es wahrscheinlich falsch an. Bitte zeige mal dein Versuch.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Avatar von SonMiko
    SonMiko SonMiko ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Habs gelöst:
    Having war schon richtig, aber der Tabellenname musste weggelassen werden:
    HAVING
    joiner_id = X hat also geklappt!

    Danke
     
    Besten Gruß,

    Mike

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Hast du noch ein GROUP BY darüber? Ansonsten hat HAVING nicht viel verloren
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Avatar von SonMiko
    SonMiko SonMiko ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Nein hab ich nicht.
    Es funktioniert so auf dem Weg - gerne kannst du mir aber eine alternative oder eine bessere Variante unterbreiten?!
     
    Besten Gruß,

    Mike

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mach ich, nachdem du mal gezeigt hast wie du es umgesetzt hast.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 05.05.07, 19:44
  2. Timeout beim Löschen einer Tabelle mit 1,3 Millionen Datensätzen
    Von tommy85 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 07.11.06, 11:59
  3. Bestimmte Einträge aus einer Tabelle in eine andere Tabelle kopieren
    Von medico im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 29.03.06, 18:42
  4. Zwei untersch. Formulare in einer Tabelle
    Von djnelly im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 05.07.04, 13:56
  5. anzeigeprobs nach einfügen einer weiteren tabelle ...
    Von Prailer im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 25.01.02, 05:05