Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zapytanie PROBLEM?
Forum PHP.pl > Forum > Bazy danych > MySQL
Ryder
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
MMPrime
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
Ryder
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ć.
Virti
zamiast AND spróbuj OR
Ryder
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.
MMPrime
Jaki jest cel Twojego zapytania, podaj więcej przykładowych danych bo dla zaprezentowanych wcześniej moje zapytanie zwróci poprawny wynik.
Ryder
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
MMPrime
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
Ryder
Dzięki wiekie

Spodziweałem się że za proste to zapytanie nie będzie
nevt
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.