Cześć, na zadanie z Baz Danych mam napisać coś w stylu prostego systemu rezerwacji, a dokładnie wyświetlanie wiadomości, na temat zmian i mam taki problem:

1. Mam tabele user_post, gdzie przechowuję informację na temat daty i nr rezerwacji
2. Mam tabele rezerwacja z odpowiednimi wartościami
3. Mam tabele archiwum - gdzie lądują rezerwacje po odpowiednim czasie, dodaje jedno pole)
(2 i 3 - w obu tabelach są dokładnie te same dane, tzn id w rezerwacjach i archiwum jest to samo)
Wszystko działa ok.

Teraz chciałem zrobić widok, który łączy mi wiersz z tabeli user_post z odpowiednią rezerwacją. Jeżeli założę że pobieram z archiwum (albo rezerwacji) to działa dobrze. Jednak jak chce zrobić warunek, żeby pobierał mi z tam tąd, gdzie znajduje się wpis, to już nie działa. Próbowałem w taki sposób:

  1. SELECT [wszystkie pola]
  2. FROM post_hotel
  3.  
  4. LEFT JOIN (SELECT IF( licznik =0, 'archive', 'reservation' )
  5. FROM (SELECT COUNT( * ) licznik
  6. FROM reservation
  7. INNER JOIN post_hotel ON reservation.id_reservation = post_hotel.id_reservation
  8. ) AS cos) k ON post_hotel.id_reservation = k.id_reservation
  9.  
  10. LEFT JOIN room ON k.id_room = room.id_room
  11. LEFT JOIN hotel ON room.id_hotel = hotel.id_hotel
  12. LEFT JOIN user ON hotel.id_user = user.id_user;
  13.  


Jak mam tak, to działa:
  1. SELECT [wszystkie pola]
  2. FROM post_hotel
  3.  
  4. LEFT JOIN archive k ON post_hotel.id_reservation = k.id_reservation
  5. LEFT JOIN room ON k.id_room = room.id_room
  6. LEFT JOIN hotel ON room.id_hotel = hotel.id_hotel
  7. LEFT JOIN user ON hotel.id_user = user.id_user;


Bardzo proszę o jakąś podpowiedź.