Ok Leute,
ich hab mich nachdem ich nun wieder nüchtern bin wieder daran gewagt und bin soweit gekommen:
SELECT t.user_id AS tuid, t.*, u.user_firstname, f.user_id AS F_USER_ID, f.user_friend_id AS F_USER_FRIEND_ID FROM
talks AS t
LEFT JOIN
users AS u ON u.user_id = t.user_id
LEFT JOIN
friends AS f ON (f.user_id = $uid OR f.user_friend_id = $uid)
WHERE
t.user_id = f.user_friend_id
dieser query findet zuverlässig allepostings von profilen mit denen man befreundet ist
das problem ist nur, dass wenn ich auch alle eigenen einträge ausgeben will die so oft ausgegeben werden wie es freundes-verbindungen gibt
tja soweit bin ich dann mal
brauche also immer noch hilfe
Habe noch etwas dran bearbeitet und bin nun bei folgendem Code:
SELECT t.user_id, t.*, u.user_firstname, f.user_id AS F_USER_ID, f.user_friend_id AS F_USER_FRIEND_ID FROM
talks AS t
LEFT JOIN
users AS u ON u.user_id = t.user_id
LEFT JOIN
friends AS f ON (f.user_id = $uid OR f.user_friend_id = $uid)
WHERE
t.user_id = f.user_id OR t.user_id = f.user_friend_id
Da das ganze ein bisschen schwer zu beschreiben ist hab ich das ganze mal was var_dump ausgegeben, damit dass ev ein bisschen leichter nachzuvollziehen ist:
array(4) {
[0]=>
array(15) {
[0]=>
string(1) "2"
['user_id']=>
string(1) "2"
[1]=>
string(3) "142"
['talk_id']=>
string(3) "142"
[2]=>
string(1) "2"
[3]=>
string(10) "1291787499"
['talk_time']=>
string(10) "1291787499"
[4]=>
string(12) "Max schreibt"
['talk_text']=>
string(12) "Max schreibt"
[5]=>
string(3) "Max"
['user_firstname']=>
string(3) "Max"
[6]=>
string(1) "1"
['F_USER_ID']=>
string(1) "1"
[7]=>
string(1) "2"
['F_USER_FRIEND_ID']=>
string(1) "2"
}
[1]=>
array(15) {
[0]=>
string(1) "1"
['user_id']=>
string(1) "1"
[1]=>
string(3) "140"
['talk_id']=>
string(3) "140"
[2]=>
string(1) "1"
[3]=>
string(10) "1291787438"
['talk_time']=>
string(10) "1291787438"
[4]=>
string(16) "Mathias schreibt"
['talk_text']=>
string(16) "Mathias schreibt"
[5]=>
string(7) "Mathias"
['user_firstname']=>
string(7) "Mathias"
[6]=>
string(1) "1"
['F_USER_ID']=>
string(1) "1"
[7]=>
string(1) "2"
['F_USER_FRIEND_ID']=>
string(1) "2"
}
[2]=>
array(15) {
[0]=>
string(1) "1"
['user_id']=>
string(1) "1"
[1]=>
string(3) "140"
['talk_id']=>
string(3) "140"
[2]=>
string(1) "1"
[3]=>
string(10) "1291787438"
['talk_time']=>
string(10) "1291787438"
[4]=>
string(16) "Mathias schreibt"
['talk_text']=>
string(16) "Mathias schreibt"
[5]=>
string(7) "Mathias"
['user_firstname']=>
string(7) "Mathias"
[6]=>
string(1) "1"
['F_USER_ID']=>
string(1) "1"
[7]=>
string(1) "3"
['F_USER_FRIEND_ID']=>
string(1) "3"
}
[3]=>
array(15) {
[0]=>
string(1) "3"
['user_id']=>
string(1) "3"
[1]=>
string(3) "141"
['talk_id']=>
string(3) "141"
[2]=>
string(1) "3"
[3]=>
string(10) "1291787487"
['talk_time']=>
string(10) "1291787487"
[4]=>
string(14) "Mario schreibt"
['talk_text']=>
string(14) "Mario schreibt"
[5]=>
string(5) "Mario"
['user_firstname']=>
string(5) "Mario"
[6]=>
string(1) "1"
['F_USER_ID']=>
string(1) "1"
[7]=>
string(1) "3"
['F_USER_FRIEND_ID']=>
string(1) "3"
}
}
Alles anzeigen
das in meinem letzten posting beschriebene problem liegt bei ['F_USER_ID']
wie man sieht wird der name "Mathias" 2 mal ausgegeben, der rest korrekt
entfernt man nun "t.user_id = f.user_id OR" ganz unten werden die 2 "Mathias" einträge verschwinden
entfernt man das "t.user_id = f.user_friend_id" werden nur mehr die zwei "Mathias" einträge stehen bleiben
ich will es erreichen dass "Max" und "Mario" angezeigt werden und EINMAL "Mathias"
Geschafft
SELECT t.user_id, t.*, u.user_firstname, f.user_id AS F_USER_ID, f.user_friend_id AS F_USER_FRIEND_ID FROM
talks AS t
LEFT JOIN
users AS u ON u.user_id = t.user_id
LEFT JOIN
friends AS f ON (f.user_friend_id = t.user_id)
WHERE
t.user_id = $uid OR t.user_id = f.user_friend_id