![Wojciech Sznapka](https://static.goldenline.pl/user_photo/229/user_225765_debded_basic.jpg)
Wojciech
Sznapka
CTO @ STS Zakłady
Bukmacherskie
Temat: Tabela krzyżowa w MySQL
Nie za bardzo wiem jak to dobrze nazwać (cross table, pivot table ?), więc może przykład:
osoby
id | name
---------
1 | Janek
2 | Franek
3 | Józio
spotkania
id | data
1 | 2009-07-01
2 | 2009-06-23
3 | 2009-05-09
obecnosci (osoby2spotkania)
osoba_id | spotkanie_id
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 3
z tych danych chcę uzyskać listę obecności w tej postaci:
osoba | 2009-07-01 | 2009-06-23 | 2009-05-09
Janek | X | X | -
Franek | X | X | X
Józio | - | - | -
Wiem jak to zrobić statycznie, w sensie zrobić select name, (select coś tam) AS '2009-07-01' From ... ale to rozwiązanie mnie nie satysfakcjonuje, gdyż kolejne spotkania będą dodawane, a ja nie chce za każdym razem zmieniać zapytania. Czy da się zrobić to dynamicznie? Jestem pewny, że czystym zapytaniem nie, ale czy procedurą, która np. utworzy listę, a potem do tej listy (cursora?) będzie dodawała kolejne kolumny i zwróci w postaci powyższej?
PS. Nie chcę póki co zaciągać do tego frontendu, ciągle mam nadzieję, że da się to zrobić czystym SQL'em.
PS 2. Jeśli da się to zrobić w innej bazie (Postgre, czy cokolwiek innego darmowego), to też chętnie się o tym dowiem :-)