![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 6.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, posiadam 3 tabele dajmy na to:
event (id, name, .. ), event_users (id, user, event ), wait (id, time, event) Wszystko dziala tak ze do wierszy w tabeli event podczepiam kolejnych uzytkownikow do wydarzen ( do wydarzen zas podpinam inner joinem tabele wait ). Chcialbym jednak by wypisalo mi jedyne te wydarzenia w ktorych nie ma podpietego usera o np. moim id Probowalem juz z tym group by i innymi ale ciagle zwraca mi bledne dane Moglby ktos chociaz schematycznie to nakreslic? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT
e.id, e.name FROM event AS e LEFT JOIN event_users AS eu ON e.id = eu.event WHERE eu.user = ? AND eu.event IS NULL Ten post edytował Mchl 1.03.2010, 09:13:45 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 6.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
NIestety ten przyklad zwraca mi neprawidlowe wyniki
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Podaj jakieś przykładowe dane, i jakie wyniki chciałbyś otrzymać.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 6.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Moze inaczej posadam tabele:
event_main
event_users
event_wait
I teraz tak chce miec w wyniku wszystkie dane z tabeli event_main oraz dalaczone do niej dane z event_wait ( tu nie ma problemu bo zawsze jest w stosnku jeden - do jednego) tylko te eventy do ktorych userzy sie nie dolaczyli Dal wyniku bez usera =2 Maja siie zwrocic wartosci dla eventow 3,2,4 poszerzone o tabele event_wait Ten post edytował likon1 1.03.2010, 19:36:36 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT
t1.id, t1.user, t1.event FROM event_user AS t1 LEFT JOIN ( SELECT DISTINCT user FROM event_user WHERE user != 2 ) AS t2 ON t1.user = t2.user WHERE t2.user IS NULL |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 6.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Heh to zapytanie zwraca cos odwrotnego - wszystkie eventy w ktorych uczestniczyl dany user:)
Zapytane zwrocilo eventy innych uczestnikow innych niz 2, ale nie wyklucza to ze 2 tez czasem w nim nie uczestniczyla Dokladnie takie wyrazenie zwrocilo to co chcialem: Zrobilem to jednak na piechote bo licze jakby ilosc uztkownikow na event bez tych userow z id=2 i z tym id a potem porownuje = jesli tyle samo to go wypisuje Zna ktos jakis lepszy pomysl bo to jest zbyt dlugie..
Ten post edytował likon1 1.03.2010, 21:59:39 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Widzę, że coś przysypiałem wczoraj...
Kod SELECT
DISTINCT t.event FROM event_user AS t LEFT JOIN ( SELECT t1.event FROM event_user AS t1 LEFT JOIN ( SELECT DISTINCT user FROM event_user WHERE user != 2 ) AS t2 ON t1.user = t2.user WHERE t2.user IS NULL ) AS sq ON t.event = sq.event WHERE sq.event IS NULL |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 6.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzilem szybkosc dzialania Twojego i mojego zapytania i jednak moje jest szybsze:)
Mimo wszystko dzieki za pomoc |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Może potrzeba mu lepszych indeksów? (IMG:style_emoticons/default/tongue.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:00 |