Denver
5.11.2003, 19:22:47
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
Denver
5.11.2003, 20:43:18
dzieki bardzo, nie znalem dotychczas tego polecenia. wystarczylo po SELECT wpisac DISTINCT i dziala

dzieki jeszcze raz.
uboottd
14.11.2003, 18:48:33
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]