Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacja n:m
Forum PHP.pl > Forum > Bazy danych
stabilq
Witam,

Otóż posiadam dwie tabele a i b połączone ze soba trzecią tabelą c (relacja wiele do wielu).
Tabela 'a' zawiera id, imie.
Tabela 'b' zawiera id, tytul.
Tabela 'c' zawiera aid i bid.

Problem mój polega na tym, że nie wiem w jaki sposób pobrać wszystkie dane z bazy. Załóżmy, że mam takie relacje:

a
1 tomek
2 marek
3 zosia

b
1 cokolwiek
2 cokolwiek1
3 okolwiek2

c
1 1
2 2

Takie zapytanie:
  1. SELECT * FROM `a` LEFT JOIN c ON (a.id=c.aid) LEFT JOIN b ON (c.bid=b.id) WHERE (a.imie LIKE '%o%' OR b.tytul LIKE '%o%')


zwróci:

tomek cokolwiek
marek cokolwiek1
zosia NULL

Natomiast takie, gdzie zamiast LEFT JOIN jest RIGHT JOIN

  1. SELECT * FROM `a` LEFT JOIN c ON (a.id=c.aid) RIGHT JOIN b ON (c.bid=b.id) WHERE (a.imie LIKE '%o%' OR b.tytul LIKE '%o%')


zwróci:

tomek cokolwiek
marek cokolwiek1
NULL cokolwiek2

Jak zbudowac zapytanie, o ile to możliwe, które zwróci:

tomek cokolwiek
marek cokolwiek1
zosia NULL
NULL cokolwiek2

Mam nadzieję, że napisałem w miarę jasno.
Z góry dziękuję za odpowiedź.
sazian
FULL JOIN
pl.wikipedia.org/wiki/Join_(SQL)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.