![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam 3 tabele
USERS, pola name,uid(moje unikalne id) PERM, value PREMIUM, uid (wypisałem tylko pola które mnie interesują) i chce zrobić zapytanie typu select który pobierze mi wszystko userów z bazy USER których name nie ma w bazie PERM pod polem value oraz tych których uid nie znajduje sie w bazie PREMIUM. próbowałem SELECT * FROM users JOIN perm ON users.name != perm.value; i niestety było tak że jeden user był pokazany tyle razy ile jest rekordów w tabeli perm;/ taki przykład USERS name = dekros uid=1231231123 name = test uid = 939293902 name = testowy uid = uid = 3213598003 PERM value = dekros PREMIUM uid = 3213598003 i zapytanie powinno pokazać mi tylko gracza test bo znajduje sie tylko w tabeli USERS, gracza dekros nie bo jest w PERM a test tez nie bo jest w PREMIUM Ten post edytował dekros 6.09.2016, 16:34:20 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 27.10.2015 Ostrzeżenie: (0%) ![]() ![]() |
Nie rób LEFT JOINa bo będziesz cierpiał jak będzie więcej danych, czemu tak jest?
Ponieważ optymizer SQL musi zrobić całego JOINA, a dopiero potem przefiltrować wyniki. "That's why the LEFT JOIN / IS NULL query takes 2-3 times as much as the NOT EXISTS / NOT IN query." Poszukaj opracowań w internecie czemu tak jest, jak jesteś ciekawy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 01:18 |