Pagina 1 din 1

selectare din 2 tabele

Scris: Mie Mai 22, 2013 8:25 pm
de woodyman
Am 2 tabele: post si post_vote_security .
Tabla post are: id,titlu,voturi,user
Tabla post_vote_security are: post_uniq_id,post_id,post_user,post_ip

Si sa zicem ca am in "post" : 1,Ana are mere,2, George
Si in "post_vote_security" : 1,1,George,192.168.1.1 si 2,1,Vasile,444,121,12,21


Cum fac sa accesez amandoua tabele dar sa nu mi se dubleze posturile, pentru ca in momentul de fata daca folosesc ""select * from post inner join post_vote_security on post.id = post_vote_security.post_id"" postul respectiv mi se dubleaza de cate ori este votat. Poate am gandit gresit baza de date sau ceva nu inteleg.
Sau sa fac query separat? "$sql=mysql_query("SELECT * from post"); $sql2=mysql_query("SELECT * from post_vote_security"); " ? doar ca asa nu stiu cum sa bag in acelasi while si datele din $sql si $sql2 (trecand peste $show1=mysq_fetch_array($sql) bla bla)
Multumesc.

Re: selectare din 2 tabele

Scris: Mie Mai 22, 2013 10:36 pm
de ViezuREX

Re: selectare din 2 tabele

Scris: Joi Mai 23, 2013 12:15 am
de toxicristi
Cred ca query-ul tau da acelasi rezultat ca inner join-ul lui woody man (implicit inner join).

@woodyman : query-ul pe tabelul post da un singur rand per post, iar cel pe post_vote_security da mai multe sau niciun rand per post. Trebuie sa te hotarasti ce vrei sa obtii de la acel query : ori un singur rand per post (cu eventual o suma de voturi ptr fiecare, caz in care folosesti GROUP BY), ori o lista de voturi care contine si detalii despre post , caz in care e normal sa primesti mai multe randuri cu acelasi coloane din entitatea post.

Folosind query-ul asa cum l-ai dat, nu vei returna nici posturile care exista in post, dar care nu au voturi (banuiesc ca nu vrei sa se intample asa).

Re: selectare din 2 tabele

Scris: Joi Mai 23, 2013 7:23 am
de ViezuREX
@toxicristi, ai dreptate, mi-a scapat.

GROUP BY trebuie folosit cu o functie (sum(), count() etc.) iar woodyman are nevoie de datele din tabele nu de rezultatele functiei. Cum as vedea folosit GROUP BY este de facut GROUP BY pe fiecare tabela si apoi un INNER JOIN intre rezultate sau rulat query-ul propus de mine si apoi facut GROUP BY.

Re: selectare din 2 tabele

Scris: Joi Mai 23, 2013 10:09 pm
de woodyman
Da este acelasi rezultat :).
Da in post_vote_security pot fi mai multe rezultate sau chiar nici unul ( in functie daca cineva a votat sau nu ).
Eu vreau sa afisez rezultatele din post iar daca postului respectiv, Vasile a votat si el este logat pe contul lui (daca sesiunea "Vasile" exista ) sa apara mesajul "VOTED".
Oarecum eu trebuie sa selectez cele 2 tabele:
1. tabelul "post" sa-l afisez
2. tabelul "post_vote_security" sa-l am "deschis" ,pentru a vedea daca userul (care a votat la postul 1 ) este identic cu sesiunea pentru a afisa mesajul corect, voted sau vote up.

Se intelege ce zic?
Am urcat si o poza :)

Re: selectare din 2 tabele

Scris: Joi Mai 23, 2013 10:48 pm
de toxicristi

Re: selectare din 2 tabele

Scris: Sâm Mai 25, 2013 10:53 pm
de woodyman
Da, fix asta imi trebuia, merge perfect! Multumesc mult !! Meriti o bere :D , am cautat de mi-a venit rau ca sa rezolv treaba asta. :cheers: