Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Lista zapisów + lista rezerwowa
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
mam pewien problem, nie bardzo wiem jak ugryźć taką rzecz. Mam tabele w bazie danych:

szkolenie [id, nazwa, liczba_miejsc...]
zapis [id, szkolenie_id, zaplacone...]
zapis_osoba [id, zapis_id, imie, nazwisko]

Generalnie idea jest taka, że dodawane są szkolenia, które mają określoną liczbę miejsc (z pewną, nieokreśloną, tolerancją +/-). Użytkownicy mogą zapisywać się na takie szkolenia; jeden użytkownik może zapisać kilka osób "za jednym zamachem". Jeżeli użytkownik zapisze się w momencie gdy przekroczona zostanie liczba miejsc to ląduje on na liście rezerwowej.

Aby to zobrazować: dodajemy szkolenie dla liczba_miejsc = 3. Użytkownik user_1 zapsiuje Jasia i Krysię, user_2 zapisuje Zdzisia i Henia, user_3 zapisuje Mariolę i Grzesia. Jak widać łącznie zapisano 6 osób, a miejsc wolnych jest 5 (+ tolerancja). W wyniku tego zapisy user_1 i user_2 lądują jako "właściwie", natomiast zapisy user_3 są na liście rezerwowej.

Pytanie:
W jaki sposób mogę stworzyć zapytanie (aby zrobić z niego widok), które do tabeli "zapis" dołoży mi kolumnę 0/1 dla 1=zapis właściwy oraz 0=lista rezerwowa?

Jedyne rozwiązanie jakie mi się nasuwa to bazowanie na numerowaniu wierszy by ~nospor. Należałoby pobrać dane posortowane po szkolenie_id i na bieżąco dodawać liczby osób w danym zapisie i gdy liczba ta będzie nagle większa od liczby dostępnych miejsc to wstawiać 0 (wcześniej wstawiając 1). W momencie zmiany wartości szkolenie_id należałoby zerować wartość licznika. Wydaje mi się to trochę zamotane i szczerze mówiąc nie wiem czy to ogarnę (+ dodatkowe tabele i warunki) więc prosiłbym o pomoc w tej kwestii.

Z góry bardzo dziękuję,
pion
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
W jaki sposób mogę stworzyć zapytanie (aby zrobić z niego widok), które do tabeli "zapis" dołoży mi kolumnę 0/1 dla 1=zapis właściwy oraz 0=lista rezerwowa?

phpMyAdminem nie dasz rady? [;

Cytat
Jedyne rozwiązanie jakie mi się nasuwa to bazowanie na numerowaniu wierszy by ~nospor. Należałoby pobrać dane posortowane po szkolenie_id i na bieżąco dodawać liczby osób w danym zapisie i gdy liczba ta będzie nagle większa od liczby dostępnych miejsc to wstawiać 0 (wcześniej wstawiając 1)

Też tak można. [;

Albo po prostu
  1. UPDATE tabela SET aktywne=1 WHERE szkolenie_id=12 LIMIT 5

(liczba miejsc; domyślnie -> 0)

Cytat
Wydaje mi się to trochę zamotane i szczerze mówiąc nie wiem czy to ogarnę (+ dodatkowe tabele i warunki) więc prosiłbym o pomoc w tej kwestii.

A na co dodatkowe tabele? tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@erix:
Z całym szacunkiem ale wybacz - Twój post jest kompletnie nie na temat.

Cytat(erix @ 21.07.2009, 22:29:14 ) *
phpMyAdminem nie dasz rady? [;

Masz na myśli fizyczne dodanie takiej kolumny? Jeżeli tak to nie o to mi chodzi.

[quote name='erix' post='638109' date='21.07.2009, 22:29:14 ']Albo po prostu
[SQL] ,'f')

  • [/list]

  • [/list]

  • [/list]

  • [/list]
  • Go to the top of the page
    +Quote Post
    kefirek
    post
    Post #4





    Grupa: Zarejestrowani
    Postów: 781
    Pomógł: 256
    Dołączył: 29.06.2008

    Ostrzeżenie: (0%)
    -----


    Cytat
    W jaki sposób mogę stworzyć zapytanie (aby zrobić z niego widok), które do tabeli "zapis" dołoży mi kolumnę 0/1 dla 1=zapis właściwy oraz 0=lista rezerwowa?


    Możesz użyć. NAME_CONST()
    Go to the top of the page
    +Quote Post

    Reply to this topicStart new topic
    1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
    0 Zarejestrowanych:

     



    RSS Aktualny czas: 21.08.2025 - 04:18