Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie SQL
Forum PHP.pl > Forum > Bazy danych
Denver
Witam.

Mam w bazie MySQL dwie tabele: users i moderators

users posiada pole "id", moderators posiada pole "user_id"

potrzebuje wybrac z bazy wszystkich uzytkownikow (users), ktorych wartosc pola "id" nie istnieje w zadnym polu w rekordach tabeli moderators...

jesli zalozmy dam:

[sql:1:207a4b038c]SELECT u.id as u_id FROM users u, moderators m WHERE m.user_id != u.id ORDER BY u.id ASC[/sql:1:207a4b038c]

to gdy rekordow w tabeli moderators jest pięć, to wypisuje mi 5 razy kazdego usera, a chcialbym, aby wypisal tylko 1 raz.



jakies propozycje?

z gory dzieki
FiDO
uzyj DISTINCT
Denver
dzieki bardzo, nie znalem dotychczas tego polecenia. wystarczylo po SELECT wpisac DISTINCT i dziala smile.gif dzieki jeszcze raz.
uboottd
Jak Ci sie ta baza rozrosnie to DBMSowi stana wlosy deba jak zobaczy takie zapytanie. Pamietaj ze zanim on znajdzie wynik to musi wykonac pelne kartezjanskie sklejenie ( czyli wygeneorwac sobie wynik o ilosc uztkownikow razy ilosc moderatow ) wierszy.

lepsza metoda:
[sql:1:d59a4795b7]
SELECT u.id AS u_id
FROM users u LEFT JOIN moderators m ON u.id = m.user_id
WHERE m.user_id is null
ORDER BY u.id ASC
[/sql:1:d59a4795b7]
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.