Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zapytanie PROBLEM?
Ryder
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Jak znależć wszystkich użytkowników majacych id_dodatkowe 1 i 2 i 3 (WSZYSTKIE 3)


Tabela wybląda tak:

id_pomocnicza    id_uzytkownika   id_dodatkowe

       1                       1                      1
       2                       1                      2
       3                       1                      3
       4                       2                      1
       5                       2                      3
       6                       3                      2 

czyli powinno wskazać id_uzytkownika nr 1
Go to the top of the page
+Quote Post
MMPrime
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 12
Dołączył: 23.04.2008

Ostrzeżenie: (0%)
-----


Struktura bazy danych którą zaprezentowałeś jest prosta, nie opisałeś jednak co dokładnie ma robić ów zapytanie, ponieważ można rozwiązać to na parę sposobów. Na przykład tak:
Kod
SELECT * FROM tabela
WHERE COUNT(id_uzytkownika) = 3
GROUP BY id_uzytkownika


--------------------
Go to the top of the page
+Quote Post
Ryder
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Chodzi mi o zapytanie w stylu zamieszczonego poniżej

  1. SELECT id_uzytkownika
  2. FROM tabela WHERE id_dodatkowe = 1 AND id_dodatkowe = 2 AND id_dodatkowe = 3


To zapytanie nie działa i nie wiem jak je inaczej zrobić.

Ten post edytował Ryder 26.04.2008, 08:24:21
Go to the top of the page
+Quote Post
Virti
post
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

Ostrzeżenie: (0%)
-----


zamiast AND spróbuj OR

Ten post edytował Virti 26.04.2008, 08:27:11
Go to the top of the page
+Quote Post
Ryder
post
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


OR nie można użyć bo wtedy wystarczy że jeden z warunków podanych jest poprawny.

A mi chodzi o to żeby wszystkie trzy warunki musiały być spełnione.
Go to the top of the page
+Quote Post
MMPrime
post
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 12
Dołączył: 23.04.2008

Ostrzeżenie: (0%)
-----


Jaki jest cel Twojego zapytania, podaj więcej przykładowych danych bo dla zaprezentowanych wcześniej moje zapytanie zwróci poprawny wynik.


--------------------
Go to the top of the page
+Quote Post
Ryder
post
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Tabela uzywane_media

Wyglada dokładnie tak




Teraz robie zapytanie



Ale to i tak chyba by nie działało tak jak powinno, bo ty zliczasz ilość wystąpień, a nie sprawdzasz konkretnych wartości

W tym podanym teraz przykładzie powinno zwrócić id_uzytkownika 1 i 2

Ten post edytował Ryder 26.04.2008, 08:55:20
Go to the top of the page
+Quote Post
MMPrime
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 12
Dołączył: 23.04.2008

Ostrzeżenie: (0%)
-----


Widzisz, to zmienia trochę sytuację, prawidłowym zapytaniem będzie wtedy:
Kod
SELECT id_uzytkownika FROM ( SELECT *, COUNT(*) as num FROM `uzywane_media` WHERE id_media IN (1,2,3) GROUP BY id_uzytkownika ) as tm WHERE tm.num = 3


--------------------
Go to the top of the page
+Quote Post
Ryder
post
Post #9





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Dzięki wiekie

Spodziweałem się że za proste to zapytanie nie będzie
Go to the top of the page
+Quote Post
nevt
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


nie ma potrzeby użycia podzapytań, wystarczy trochę prostsze pytanie
  1. SELECT * FROM uzywane_media WHERE id_media IN(1, 2, 3) GROUP BY id_uzytkownika HAVING COUNT(id_media)=3;

modyfikując listę w IN(...) oraz liczbę w COUNT(...) możesz wybierać dowolne zestawy id_media


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:13