Lucifix

Statistika

Pridružen/a:
14 okt 2008, 07:44
Zadnjič aktiven:
Prispevki:
Teme:
122 | Vse teme
438
12
0
všeč(0) ni všeč(0) spam(0)
#17

Jao kaj so delali s strukturo tabel v sistemu phpBB2?!?! Ko nekdo dobi ZS, se ustvari nova vrstica samo za pošiljatelja - ala sent message. Groza za programiranje...



Hvala še 1x vsem za pomoč, ampak tokrat bom pa vrgel puško v koruzo in začel s čim bolj produktivnim :/


všeč(0) ni všeč(0) spam(0)
#13

Saj zdaj razmišljam, da je najlažje pogledati primer kar na FB strani:

https://www.facebook.com/messages/ (leva stran, kjer se nahajajo vsa sporočila med uporabniki)


všeč(0) ni všeč(0) spam(0)
#12

@Vini:


Poizvedba je potem enostavna:
SELECT
zasebna_sporocila.*
FROM
zasebna_sporocila_pomozna,
zasebna_sporocila
WHERE
zasebna_sporocila_pomozna.user_id = 1 AND
zasebna_sporocila.id = zasebna_sporocila_pomozna.sporocilo_id
ORDER BY
zasebna_sporocila_pomozna.datum;

Tvoja koda potem vrne rezultate v tabeli, ki so vezane na uporabnika z recimo ID št. 1. Ampak s tem še ne dobim groupiranih / unikatnih poizvedb.



Primer:

dva uporabnika, eden z ID 1 in drug z ID 2, se med sabo dopisujete. Potem si dopusujeta še uporabnika z ID 1 in ID 3. In pa recimo up. ID 2 z up. ID 3.



Ker sem recimo jaz up. ID 1, želim dobite en rezultat id 1 & id 2, ter id 1 & id 3. Razmerje med ID 2 in ID 3 me pač ne "zanima", ker so pač zasebna sporočila.



Uf kako bi to bilo lažje obrazložiti v živo :)


všeč(0) ni všeč(0) spam(0)
#11

@blackmamba tudi o tem sem že razmišljal, ampak v tvojem primeru bi moral nekam še vstavit user id spremljivko, ki je vezana na določenega člana.


všeč(0) ni všeč(0) spam(0)
#9

Thx Vini, grem na delo, ker bo to verjetno kar dobra rešitev ;)


všeč(0) ni všeč(0) spam(0)
#7

@Vini mogoče je tvoja rešitev res najbolj primerna. Bolj me skrbi, da bom moral potem preurejati še ostalo kodo, da bo v primeru izbrisa uporabnika ali pa izbrisa kakšnega sporočila potrebno narediti tudi en nov sql stavek, ki bo urejat tisto pomožno tabelo.

Navsezadnje mi je pomembno le da dobim zadnji ID tabele, ki sta je 2 uporabnika uporabljala za chat.



@Mešetar




ce bi rad to delal s sporocili, bi moral voditi idsporocila (root) in potem vsa pripeta sporocila k temu (parentid) ... ce gre za sporocila tipa pri FBju ... ali forumu (ali gmailu)...




To pa je predlagal Vini v svojem postu - če sem te prav razumel.


všeč(0) ni všeč(0) spam(0)
#3

@boskar tvoj primeru bi prišel prav, če bi že imel id od ostalih članov s katerimi je dotični član izmenjal sporočila. Jaz pa želim dobiti vsa ID sporočila, v katerih je sodeloval en uporabnik (npr. id = 1). Problem pa je, ker ima lahko taisti uporabnik (id = 1) svoj id vpisan v row fromuser ali pa touser.



@Mešetar mislim, da mi group by ne bo prišel prav...


všeč(0) ni všeč(0) spam(0)
#

Če se mi kdaj zaplete pri programiranju, pa je to pri kakšnem bolj zahtevnem MySQL stavku in zato vas prosim za pomoč.



Imam tabelo zasebna_sporocila, ki ima takšno strukturo:



id | fromuser | touser | message | date

1 | 1 | 3 | blablabla | 1043684100

2 | 1 | 2 | blablabla | 1049146320

3 | 2 | 1 | blablabla | 1049146920

4 | 3 | 1 | blablabla | 1049147100

5 | 2 | 3 | blablabla | 1049153340

6 | 1 | 2 | blablabla | 1049627280



Z navadnim DISTINCT ukazom (SELECT DISTINCT fromuser, touser FROM zasebna_sporocila) dobim takšen rezultat:



fromuser | touser

1 | 3

1 | 2

2 | 1

3 | 1

2 | 3



Problem pa je, ker bi rad dobil unikatne poizvedbe. V zgornjem rezultatu se prikaže 1 2 in 2 1 - kar bi želel, da se prikaže kot en rezultat, saj bi rad dobil zgrupirana sporočila med dvema uporabnikoma. Nekako podobno kot ima to narejeno Facebook v zasebnih sporočilih.



Nekam bi moral še dodati poizvedbo WHERE (fromuser = 1 OR touser = 1) - rezultat za uporabnika, ki ima id 1.



Seveda moram potem na koncu rezultate urediti po datumu (ORDER BY date DESC).



Kakršnakoli pomoč več kot dobrodošla! Zakomplicirano? :)


všeč(0) ni všeč(0) spam(0)