Pobranie danych z tabeli na podstawie spełnionych kryteriów z drugiej

0

Mam dwie tabele.

W jednej mam listę turniejów a w drugiej zapisy w której jest id turnieju i id uzytkownika który jest do niego zapisany.
Musze pobrać wszystkie turnieje do których nie jest zapisany użytkownik.

ma to działać miejwięcej tak :

SELECT table_turniej.id_turniej,
table_turniej.nazwa_turniej
FROM
table_turniej , table_zapisy
WHERE
table_zapisy.id_user != {id zalogowanego użytkownika}

Próbowałem z łączeniem tabeli. framework CodeIgniter błędu mi nie wywalał ale żadnych wyników też nie dawał

0

Zapytanie wygląda na poprawne. Jak puścisz takie zapytanie na bazie to nic nie zwraca? A na pewno są takie turnieje?

2

To zapytanie, które podałeś zwróci Ci wszystkie turnieje, w których biorą udział użytkownicy inni niż zalogowany.
Poprawne zapytanie, które zwraca wszystkie turnieje, w których nie bierze udziału zalogowany użytkownik może wyglądać tak:

SELECT * FROM table_turniej tt
WHERE NOT EXISTS
	(SELECT *
	 FROM
             table_zapisy tz
	 WHERE
             tz.id_user = {id_zalogowanego_uzytkownika) AND
             tz.id_turniej = tt.id_turniej)
0

Dzięki wielkie zaraz sprawdzę.
A tak z ciekawości. Można użyć LEFT OUTER JOIN z parametrem WHERE żeby nie pobierało tych gdzie jest zapisany zalogowany user?

Sprawdziłem, działa ;D Jesteś wielki dzięki.

0

Mam jeszcze jedno pytanie.
Jak próbuje pobrać wszystkie turnieje i zapisanych do nich graczy to tworzy mi tyle tablic ile jest członków w zwróconym wyniku a chciałbym aby wynik zagnieżdżało

table_runiej['turniej jeden'] = array(
'turniej' => 'nazwa turnijeu'

 'czlonkowie' => array (
                            'uesr jeden' => array( dane),
                            'user dwa'    =>array(  dane)
                     );

);

1 użytkowników online, w tym zalogowanych: 0, gości: 1