Autor Zpráva
Lisoe
Profil *
Zdravím,

mám dotaz, mám následující tabulky:

event_order
id | event_id | ticket_type_id | tickets

event_ticket_type
id | event_id | name | pcs_from | pcs_to | price

V event_order ukládám objednávky, takže jsem schopný zjistit, kolik lístků bylo prodáno pro daný ticket_type_id. Ovšem v event_ticket_type ukládám za kolik se má prodávat v dané vlně lístek (např. 0-100 lístků - 200 Kč, 101 - 200 lístků - 300 Kč). Zároveň můžou být dva typy lístků, takže pro jednu akci může být standard lístek (např. 2 vlny lístků) a VIP lístek (např. 1 vlna) - takže 3 záznamy v databázi. A já potřebuji poskládat dotaz, který mi automaticky zobrazí aktuálně běžící vlny. Zkoušel jsem následující dotaz:

select 
        t.id,
    t.name,
    SUM(o.tickets) tickets_total,
        if(SUM(o.tickets) >= pcs_from AND SUM(o.tickets) <= pcs_to, 1, 0) valid
from 
    event_ticket_type t
left join 
    event_order o 
        on o.ticket_type_id = t.id
where 
    t.event_id = 1
group by 
    o.ticket_type_id

Chtěl jsem do valid ukládat, zda lístek zobrazit na webu nebo ne, ovšem ten dotaz nefunguje správně.

Díky moc za radu!
Kajman
Profil
A nechybí v event_ticket_type sloupec s tím rozdělemín typu lístků? Nebo jak poznáte, že dva záznamy jsou normální lístky a jeden záznam je VIP?
Lisoe
Profil *
Kajman:
On tam je ještě sloupec, kde se vyplňuje obrázek lístku (generuje se lístek, takže pro standardní je jeden vzhled a pro VIP jiný, zároveň je tam ještě doplňující text). Takže to tam není třeba pro moje potřeby. Pokud by to však bylo nezbytné, můžu to tam doplnit. Je to tam potřeba? Díky moc!
Kajman
Profil
Já bych si asi místo sloupců pcs_from a pcs_to dal jen počet lístků k dispozici celkem. Pak sečtete objednávky a rozdíl je zbývající počet. Buď pak nabídnete všechny nevyprodané a necháte na uživateli, aby si vybral výhodnější nebo VIP, nebo si uděláte ty skupiny a budete nabízet ty nejlevnější ze skupiny (maximálně tolik, kolik je volných).

Omezení od - do bych spíše čekal na datum prodeje. To by dovolilo zdražovat i časem bez ohledu na prodaný počet lístků (jen by si v tomto případě pro větší obecnost musely lístky sdílet počet kusů - nebo by byl automat, co neprodané a vypršené přesune do dalšího volného termínu).
Lisoe
Profil *
Kajman:
Asi moc nerozumim, každopádně tohle je specifický příklad, kdy ty vlny jsou doopravdy dle počtu lístků. Potřebuju vždy zobrazovat pouze tu aktuální vlnu, teoreticky se může stát, že budou "standardní" 2 vlny (0-100 / 200 Kč; 101-200 / 300 Kč) a VIP (0-10 / 400 Kč; 11-20 500 Kč).

Bude prodáno standardních 75, takže se má zobrazit poze lístky za 200 Kč a VIP prodáno 14, takže se má zobrazit lístky za 500 Kč. Může i nastat situace, kdy by např. VIP neměl být k dispozici, protože bylo prodáno 20 lístků.

Dá se to nějak rozumně vyřešit?

Ještě jednou díky!
Kajman
Profil
Když tam budou takovéto sloupce
skupina_vln poradi_vlny listku cena
1           1           100    200
1           2           100    300
2           1           10     400
2           2           10     500
tak by to neměl být problém. Nejtěžší bude to rozmezí, např. jsou poslední dva lístky za 200 a uživatel chce tři, to bude asi potřeba i spolupráce aplikace. Nebo je třeba nějaké omezení na počet lístků? Tedy, že si může objednat např. maximálně 10 v jedné objednávce?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0