Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema cu select
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Lun Oct 29, 2007 4:04 pm    Titlul subiectului: Problema cu select  

Salutare la toti

am o problema cu un select

am 3 tabele:
tabela cu useri:
idIUser userName ....
--------------------------------
1 user1
2 user2
......................

tabela cu servicii:
idService serviceName
--------------------------------
1 service1
2 service2
......................

si tabela cu legaturile intre useri si servicii:
idUser idService
--------------------------
1 1
1 2
2 1
......................


vreau sa selectez toti userii care ofera de exemplu serviciile 1 si 2 (pot oferii si alte servicii, dar acestea 2 sunt obligatorii)
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 698
Locație: Drobeta Turnu Severin

Trimis: Lun Oct 29, 2007 7:08 pm    Titlul subiectului:  

SELECT * FROM tab_user WHERE iduser IN (SELECT iduser FROM tab_link WHERE idservice=1 OR idservice=2);
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Lun Oct 29, 2007 7:18 pm    Titlul subiectului:  

Nu este complet dechim.

oricum, am gasit solutia numai ca am uitat sa mai postez pe forum:

SELECT .... FROM.... WHERE lnk.idService IN (1,2,3,....100) ...GROUP BY u.idUser HAVING COUNT(u.idUser) = <nr servicii in IN>
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 698
Locație: Drobeta Turnu Severin

Trimis: Mar Oct 30, 2007 12:12 am    Titlul subiectului:  

Adica un user care ofera ambele servicii apare de 2 ori.
OK! Asa e ! Trebuie adaugat GROUP BY iduser
Cod:
SELECT * FROM tab_user WHERE iduser IN (SELECT iduser FROM tab_link WHERE idservice=1 OR idservice=2) GROUP BY iduser;

N-am vrut sa incurc, numai sa ajut
Completeaza, te rog, comanda (punctele) pentru ca nu o inteleg, cred ca-i de retinut si pare o alta varianta. Multumesc
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Mar Oct 30, 2007 1:12 am    Titlul subiectului:  

Nu e suficient numai group by
ideea cu acel subselect cu OR nu prea merge orice i-ai face.

Cat despre ultima ta fraza... nu inteleg ce vrei sa spui, dar poate sunt eu doar obosit
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 698
Locație: Drobeta Turnu Severin

Trimis: Mar Oct 30, 2007 2:49 am    Titlul subiectului:  

Scuze, nu intelesesem ideea.
GROUP BY pe care l-am adaugat este o prostie pentru ca nu are ce sa grupeze, in tabela user, utilizatorii nu se repeta.
Eu am selectat utilizatorii care ofera cel putin unul din serviciile 1 si 2, problema cerea sa selectez utilizatorii care ofera cel putin ambele servicii.
Am inteles cum ai rezolvat, e ok!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community