[ alfa-pro @ 25.01.2016. 16:51 ] @
Drustvo na sajtu na kome radim slicnom FB -u treba da se odradi da ima mogucnost slanja zahteva za prijateljstvo, primanje zahteva, izlistavanja zahteva itd...
Sve sam ja to uradio ali mislim da sam u samom startu postavio neke tehničke stvari pogrešno i da sam se sada malo spetljao u svemu ovome.

Imam table:

accounts - Sadrzi informacije o nekom registrovanom nalogu (account_id, account_firstname, account_lastname, account_email, itd...).
friends - Ova tabela sadrži relacije izmedju dva naloga i status da li je zahtev za prijateljstvo prihvaćen ili nije.

Code:

friend_one  friend_two  status  
----------  ----------  --------
         7           2           0       
         7           1           0       
         2           1           0       



E sada da posaljem zahtev za prijateljstvo upit je sledeci:
Code:
INSERT INTO friends (friend_one,friend_two) VALUES ('$user_id','$friend_id');


Da potrvdim zahtev za prijateljstvo:
Code:

UPDATE friends SET status="1" 
WHERE (friend_one="$user_id" OR friend_two="$user_id")
AND (friend_one="$friend_id" OR friend_two="$friend_id");


E sve ovo super radi slanje zahteva, prihvatanje zahteva i brisanje zahteva ali ja sam zakucao oko upita kako da prikazem listu mojih zahteva. Npr ko je meni poslao zahtev za prijateljstvo.

Ja sam pokusao sa upitom:

Code:
SELECT f.*
FROM friends f
WHERE (f.friend_one = 1 OR f.friend_two = 1 AND f.status = 0)


Dobijam null, prazane kolone.... A kada stavim status = 1 dobijem sve zahteve za 1. Spetljo sam se

Jel moze neko da mi da predlog kako da prikazem sve moje zahteve naravno trebacu i da spojim sa tabelom accounts da uzmem ime i prezime korisnika prilikom izlistavanja.



[ bogdan.kecman @ 25.01.2016. 17:19 ] @
ma koliko je prijateljstvo dvostrana stvar taj status treba da bude komplikovaniji od 0/1 (bice ti zahtev vec u sledecoj verziji) sa varijantom 0 - a poslao b zahtev, 1 - a follow b, 2 a friend but not follow b, 3 a blocked b ... tako da kada posaljes zahtev (a to b) imas a,b,0, kada se prihvati zahtev u startu imas a,b,1 + b,a,1 (deluje da se dupliraju podaci ali u stvari ne) i onda ako a unfollow b ali ostane friend imas a,b,2 + b,a,1 (vidis da nije duplikat) .. na dalje ti i upiti budu jednostavniji kad pitas za a uvek pitas where prvi_id = a i ne moras da radis where prvi ili drugi id = a kao sto sad moras

drugo ako juris listu zahteva koje si poslao uvek gledas da je tvoj id = prvi_id, ako juris listu zahteva poslatih tebi uvek tvoj id = drugi_id
[ alfa-pro @ 25.01.2016. 17:22 ] @
Zaboravih da stavim da kolona status je:
`status` ENUM('0','1','2') DEFAULT '0',
[ bogdan.kecman @ 25.01.2016. 17:36 ] @
ne menja taj enum nista, cuvaj "jednosmernu" datu u bazi, bice ti mnogo
lakse :D
[ alfa-pro @ 25.01.2016. 17:56 ] @
Ma nije meni problem taj enum vec nemam ideju kako da ja sada spojim ove dve tabele da mi izlista zahteve za prijateljstvo koji su meni poslati.

Sta da uporedjujem u inner join friend_one = account_id. Nije mi jasno ni malo
[ bogdan.kecman @ 25.01.2016. 20:01 ] @
da li si ti uopste procitao sta sam ti ja napisao?