selectare din 2 tabele

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

woodyman
PHPRomania Supporter
Mesaje: 6
Membru din: Lun Ian 07, 2008 11:53 pm

selectare din 2 tabele

Mesajde woodyman » Mie Mai 22, 2013 8:25 pm

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.



ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: selectare din 2 tabele

Mesajde ViezuREX » Mie Mai 22, 2013 10:36 pm


toxicristi
PHPRomania Supporter
Mesaje: 26
Membru din: Vin Apr 26, 2013 6:10 pm

Re: selectare din 2 tabele

Mesajde toxicristi » Joi Mai 23, 2013 12:15 am

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).
| |

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: selectare din 2 tabele

Mesajde ViezuREX » Joi Mai 23, 2013 7:23 am

@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.

woodyman
PHPRomania Supporter
Mesaje: 6
Membru din: Lun Ian 07, 2008 11:53 pm

Re: selectare din 2 tabele

Mesajde woodyman » Joi Mai 23, 2013 10:09 pm

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 :)

toxicristi
PHPRomania Supporter
Mesaje: 26
Membru din: Vin Apr 26, 2013 6:10 pm

Re: selectare din 2 tabele

Mesajde toxicristi » Joi Mai 23, 2013 10:48 pm

| |

woodyman
PHPRomania Supporter
Mesaje: 6
Membru din: Lun Ian 07, 2008 11:53 pm

Re: selectare din 2 tabele

Mesajde woodyman » Sâm Mai 25, 2013 10:53 pm

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:


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori