Joy: MySQL 5 - X Datensätze auslesen und eintragen mit einem Query

Moin.

Schreibe ein Message-System und man soll die Möglichkeit haben an alle seine Freunde eine Message zu schreiben.
Es gibt die Tabellen:

users:
userid, name
0, hans
1, peter
2, klaus
3, angelika

users_friends:
userid_1, userid_2
0, 1
1, 2
0, 3
2, 0

msg_users:
msgid, fromuserid, touserid

Wenn der User bei der Nachricht "An alle meine Freunde" auswählt, sollen alle seine Freunde ausgelesen werden. Also wenn Hans das tut, sollen die ids von peter, klaus und angelika genommen werden und in msg_users eingetragen werden, sollte also dann so aussehen:
msg_users:
msgid, fromuserid, touserid
0, 0, 1
0, 0, 2
0, 0, 3

Bei users_friends sieht man - die Beziehungen der User zueinander sind nicht auf userid 1 oder 2 festgelegt, siehe "0,1" und "2,0".

Ich hab es bisher mit einer Schleife gelöst, alle Freunde ausgelesen und dann mit einer Schleife jedes mal ein Query mit INSERT abgefeuert.

Gruß,

Joy

  1. Hallo,

    Schreibe ein Message-System und man soll die Möglichkeit haben an alle seine Freunde eine Message zu schreiben.

    users_friends:
    userid_1, userid_2
    0, 1
    1, 2
    0, 3
    2, 0

    msg_users:
    msgid, fromuserid, touserid

    Wenn der User bei der Nachricht "An alle meine Freunde" auswählt, sollen alle seine Freunde ausgelesen werden. Also wenn Hans das tut, sollen die ids von peter, klaus und angelika genommen werden und in msg_users eingetragen werden, sollte also dann so aussehen:
    msg_users:
    msgid, fromuserid, touserid
    0, 0, 1
    0, 0, 2
    0, 0, 3

    Bei users_friends sieht man - die Beziehungen der User zueinander sind nicht auf userid 1 oder 2 festgelegt, siehe "0,1" und "2,0".

    deswegen könntest Du eine UNION verwenden, um alle Freunde zu ermitteln ...

    Ich hab es bisher mit einer Schleife gelöst, alle Freunde ausgelesen und dann mit einer Schleife jedes mal ein Query mit INSERT abgefeuert.

    ..., die Du dann in Dein INSERT ... SELECT-Statement einbaust.

    Denke daran, dass Du zuerst die Nachricht abspeichern musst, um deren ID zu erhalten. Möchtest Du diese zwei Statements zusammenfassen, so könntest Du dies in einer Stored Routine tun.

    Freundliche Grüße

    Vinzenz