MySQL - wyświetlenie wyniku bez nawiązanej relacji czy jest możliwe?

0

Witam

Eksperymentuje z zapytaniem przy użyciu JOINow a chce wyświetlić rekord z tabeli kursy gdy nic nie ma w tabeli sesja tzn:

Mamy oto takie dwie tabele w uproszczonej wersji

Tabela Kursy

- id
- title

Tabela Sesja

- id
- kurs_id (połączenie relacyjne)
- autor_id
- puchar

W tabeli kursy mamy takie rekordy:

1 | tytulkursu1
2 | tytulkursu2
3 | tytulkursu3

A w tabeli sesja takie:

1 | 1 | 1 | 1
2 | 2 | 1 | 0
3 | 1 | 2 | 1
4 | 2 | 2 | 0

Z danych można zaobserwować ze są dwie relacje nawiązane przez dwóch autorów a kursów jest trzy

chce teraz wyświetlić 3 kursy dla danego autora jednocześnie i tam gdzie relacja by była nawiązana to wyświetlił bym puchar a gdy jej nie ma to po prostu wyświetlił bym sam kurs ze jest do przejścia

przykładowy wynik z zapytania dla np autora=1 chciał bym osiągnąć taki:

1 | tytulkurs1 | puchar=1
2 | tytulkurs2 | puchar=0
3 | tytulkurs3 | null
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
title varchar(255) NOT NULL default ''    
 ) ENGINE = InnoDB DEFAULT CHARSET = 'utf8' DEFAULT COLLATE = 'utf8_polish_ci';

CREATE TABLE session (
id INT AUTO_INCREMENT PRIMARY KEY,
courses_id INT default '0',
author_id INT,
cup TINYINT default '0',
FOREIGN KEY (courses_id) REFERENCES courses(id)
 ) ENGINE = InnoDB DEFAULT CHARSET = 'utf8' DEFAULT COLLATE = 'utf8_polish_ci';

INSERT INTO `courses` (`id`,`title`) VALUES 
 (1,'tytulkursu1'),
 (2,'tytulkursu2'),
 (3,'tytulkursu3');

INSERT INTO `session` (`id`,`courses_id`,`author_id`,`cup`) VALUES 
 (1,1,1,1),
 (2,2,1,0),
 (3,1,2,1),
 (4,2,2,0);
1

Lekcja na dziś: outer join ;)

select kursy.title, sesja.puchar from kursy left outer join sesja on kursy.id = sesja.kurs_id
0

Edit

po głębszym zastanowieniu jest jeszcze problem z warunkiem

SELECT courses.title, 
   session.cup,
   session.author_id
FROM courses LEFT OUTER JOIN 
   session ON courses.id = session.courses_id
WHERE
   session.author_id = 2 or session.author_id IS NULL

jaki zorganizowac warunk gdy w bazie mamy tak wypełnione kolumny?

INSERT INTO `session` (`id`,`courses_id`,`author_id`,`cup`) VALUES 
 (1,1,1,1),
 (2,2,1,0),
 (3,1,2,1);

gdy author_id==1 dostaje 3 wyniki
ale gdy author_id==2 dostaje 2 wyniki wiec "IS NULL" nie bedzie tu pasować

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