![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
uzyj DISTINCT
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
dzieki bardzo, nie znalem dotychczas tego polecenia. wystarczylo po SELECT wpisac DISTINCT i dziala
![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
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] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 06:29 |