Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MySQL, rezervacije, datumski upit

[es] :: MySQL :: MySQL, rezervacije, datumski upit

[ Pregleda: 1667 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

davidrs

Član broj: 119930
Poruke: 2
*.arhisoft.net.



Profil

icon MySQL, rezervacije, datumski upit12.02.2009. u 08:55 - pre 184 meseci
Pozdrav svima, pokusavam da napravim jednu test bazu o rezervacijama i stanju smestajnih kapaciteta.

OS - Ubuntu8.04, WinXP
MySQL -Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2
phpMyAdmin 2.11.3

Baza ima 2 tabele i to:
Code:

============================
mysql> show tables;
+-----------------+
| Tables_in_baza1 |
+-----------------+
| tbl_1           | 
| tbl_2           | 
+-----------------+
2 rows in set (0.00 sec)

mysql> describe tbl_1;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| ID      | int(11)      | NO   | PRI | NULL    | auto_increment | 
| naziv   | varchar(100) | NO   |     | NULL    |                | 
| dolazak | date         | NO   |     | NULL    |                | 
| odlazak | date         | NO   |     | NULL    |                | 
| ob_1    | int(11)      | NO   |     | NULL    |                | 
| ob_2    | int(11)      | NO   |     | NULL    |                | 
| ob_3    | int(11)      | NO   |     | NULL    |                | 
| ob_4    | int(11)      | NO   |     | NULL    |                | 
+---------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe tbl_2;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| ID        | smallint(6) | NO   | PRI | NULL    | auto_increment | 
| objekat   | varchar(60) | NO   |     | NULL    |                | 
| kapacitet | int(11)     | NO   |     | NULL    |                | 
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

sa sledecim podacima:
========================
mysql> select * from tbl_1;
+----+-------+------------+------------+------+------+------+------+
| ID | naziv |    dolazak    |   odlazak    | ob_1 | ob_2 | ob_3 | ob_4 |
+----+-------+------------+------------+------+------+------+------+
|  1 | skup1 | 2009-02-01 | 2009-02-05 |   10  |    5 |    0 |    0 | 
|  2 | skup2 | 2009-02-03 | 2009-02-10 |    5  |   10 |   20 |    0 | 
|  3 | skup3 | 2009-03-10 | 2009-03-14 |    0  |   20 |    0 |    0 | 
|  4 | skup4 | 2009-02-15 | 2009-02-20 |   30  |    0 |    0 |   40 | 
+----+-------+------------+------------+------+------+------+------+
4 rows in set (0.00 sec)

mysql> select * from tbl_2;
+----+---------+-----------+
| ID | objekat | kapacitet |
+----+---------+-----------+
|  1 | ob_1    |        50 | 
|  2 | ob_2    |        30 | 
|  3 | ob_3    |        70 | 
|  4 | ob_4    |        80 | 
+----+---------+-----------+
4 rows in set (0.00 sec)

Potreban mi je rezultat koji bi prikazivao za svaki dan u godini stanje kapaciteta po objektima,
trebao bi da izgleda ovako:
Code:

+----+-------+------------+------+------+------+------+
|GOD | MESEC | DATUM | ob_1|ob_2|ob_3|ob_4|
+----+-------+------------+---- --+----- -+------+------+
|2009| Januar | 2009-01-01 |    0 |    0 |    0 |    0 | 
|2009| Januar |  2009-01-02|    0 |    0 |    0 |    0 | 
|2009| Januar | 2009-01-03 |    0 |    0 |    0 |    0 | 
|2009| Januar | 2009-01-04 |    0 |    0 |    0 |    0 | 
+----+-------+------------+------+------+------+------+

Za svaki dan (kolona DATUM) bi trebalo da se izracuna da li ispunjava uslov:
IF (DATUM > ili = od 'dolazak' AND < od 'odlazak')
onda vrednost od
(ob_1 oduzmi od kapaciteta ob_1),(ob_2 oduzmi do kapaciteta ob_2), ... itd.

Ukoliko ko ima bilo kakve instrukcije kako da resim ovaj problem ili u kom smeru da idem bio bih zahvalan.


[Ovu poruku je menjao misk0 dana 13.02.2009. u 22:23 GMT+1]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.sun.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL, rezervacije, datumski upit12.02.2009. u 13:15 - pre 184 meseci
za ubuduce, ubacuj rezultate mysql klijenta izmedju [code] i [/code] da bi bilo preglednije i da bi se koristio neproporcionalni font. takodje te molim da bacis uvek "SHOW CREATE TABLE imetabele\G" umesto "DESC TABLE imatebele;" posto show create table daje mnogo potpunije podatke o tabeli i indexima.

sto se izgleda baze tice, na prvi pogled ti fali mnogo indexa (oni dolasci, odlasci na primer treba da budu indexirani i slicno .. sve po cemu ces praviti pretrage)... imena tabela su ti jako deskriptivna, za 2 godine ako budes trebao nesto da promenis samoubices se .. imena polja su jos deskriptivnija ... a koja je veza izmedju tabele 1 i tabele 2 ?

no da ne smaram .. sto se samog pitanja tice

sta se nalazi u tabeli tbl_1??? sta su vrednosti ob1.. ob4?
sta se nalazi u tabeli tbl_2??? sta su vrednosti u objekat??
kakva je veza izmedju ove 2 tabele ?

gledajuci u podatke, deluje da ce tabela tbl_2 imati uvek samo 4 sloga gde opisno za svaki ob_1, ob_2 .. pamtis kapacitet ? jel to ideja, ako jeste, losa je. sta ako sutra izgradis objekat 5?

nesto poput:
create table objekat (objekat_id bigint, objekat_name varchar(50));
create table kapacitet (objekat_id bigint, kapacitet int);
create table rezervacija (rezervacija_id bigint, objekat_id bigint, rezervacija_od date, rezervacija_do date, rezervacija_kolicina int, rezervacija_naziv);

tako da onda imas u tabeli objekat: (1, 'ob_1'), (2, 'ob_2'), (3, 'ob_3'), (4, 'ob_4') i mozes uvek dodati novi objekat. u tabeli kapacitet imas: (1, 50), (2, 30), (3, 70), (4, 80) i te dve tabele su ti povezane po objekat_id. obrati paznju da primarni kljuc u tabeli kapacitet cine "oba polja", u tabeli objekat samo polje objekat_id.

tabela rezervacije je napravljena tako da se rezervacija pravi za jedan objekat. ako hoces da se pravi za vise objekata onda umesto tabele rezervacija imas ovako:
create table rezervacija (rezervacija_id bigint, rezervacija_od date, rezervacija_do date, rezervacija_naziv);
create table rezervacija_objekat(rezervacija_id bigint, objekat_id bigint, kapacitet int);

tabela rezervacija_objekat ima pri_key rezervacija_id i objekat_id, tabela rezervacija samo rezervacija_id .. naravno dodati ostale non unique kljuceve na ostala potrebna polja (kao npr rezervacija_od i rezervacija_do);



kada ovako normalizujes bazu, mnogo je lakse napisati upit koji ti treba

kapaciteti po objektu:
Code:

mysql> select objekat.objekat_name, kapacitet.kapacitet from objekat, kapacitet where objekat.objekat_id = kapacitet.objekat_id;
+--------------+-----------+
| objekat_name | kapacitet |
+--------------+-----------+
| ob_1         |        50 | 
| ob_2         |        30 | 
| ob_3         |        70 | 
| ob_4         |        80 | 
+--------------+-----------+
4 rows in set (0.00 sec)


rezervacije:
Code:

mysql> select * from rezervacija join rezervacija_objekat using (rezervacija_id);
+----------------+----------------+----------------+-------------------+------------+-----------+
| rezervacija_id | rezervacija_od | rezervacija_do | rezervacija_naziv | objekat_id | kapacitet |
+----------------+----------------+----------------+-------------------+------------+-----------+
|              1 | 2009-01-01     | 2009-03-03     | mali perica       |          1 |        10 | 
|              1 | 2009-01-01     | 2009-03-03     | mali perica       |          2 |         5 | 
|              1 | 2009-01-01     | 2009-03-03     | mali perica       |          3 |        10 | 
|              2 | 2009-06-06     | 2010-03-03     | veliki perica     |          1 |        13 | 
|              2 | 2009-06-06     | 2010-03-03     | veliki perica     |          2 |        15 | 
|              2 | 2009-06-06     | 2010-03-03     | veliki perica     |          3 |        13 | 
|              2 | 2009-06-06     | 2010-03-03     | veliki perica     |          4 |        40 | 
|              3 | 2009-01-01     | 2009-03-03     | mali mikica       |          1 |         7 | 
|              3 | 2009-01-01     | 2009-03-03     | mali mikica       |          2 |         3 | 
|              3 | 2009-01-01     | 2009-03-03     | mali mikica       |          3 |         3 | 
|              3 | 2009-01-01     | 2009-03-03     | mali mikica       |          4 |        10 | 
+----------------+----------------+----------------+-------------------+------------+-----------+
11 rows in set (0.00 sec)


zauzece u objektu 2 na danasnji dan:
Code:

mysql> select sum(kapacitet) from rezervacija join rezervacija_objekat using (rezervacija_id) where rezervacija_objekat.objekat_id = 2 and rezervacija.rezervacija_od <= now() and rezervacija.rezervacija_do >= now();
+----------------+
| sum(kapacitet) |
+----------------+
|              8 | 
+----------------+
1 row in set (0.00 sec)


zauzece u svim objektima danas:
Code:

mysql> select rezervacija_objekat.objekat_id, sum(rezervacija_objekat.kapacitet) from rezervacija join rezervacija_objekat using (rezervacija_id) where rezervacija.rezervacija_od <= now() and rezervacija.rezervacija_do >= now() group by objekat_id;
+------------+------------------------------------+
| objekat_id | sum(rezervacija_objekat.kapacitet) |
+------------+------------------------------------+
|          1 |                                 17 | 
|          2 |                                  8 | 
|          3 |                                 13 | 
|          4 |                                 10 | 
+------------+------------------------------------+
4 rows in set (0.00 sec)


slobodno mesto u svim objektima danas (kapacitet - zauzeto)
Code:

mysql> select rezervacija_objekat.objekat_id, kapacitet.kapacitet - sum(rezervacija_objekat.kapacitet) as slobodno from rezervacija join rezervacija_objekat using (rezervacija_id) join kapacitet on (kapacitet.objekat_id = rezervacija_objekat.objekat_id) where rezervacija.rezervacija_od <= now() and rezervacija.rezervacija_do >= now() group by objekat_id;
+------------+----------+
| objekat_id | slobodno |
+------------+----------+
|          1 |       33 | 
|          2 |       22 | 
|          3 |       57 | 
|          4 |       70 | 
+------------+----------+
4 rows in set (0.00 sec)



 
Odgovor na temu

davidrs

Član broj: 119930
Poruke: 2
*.arhisoft.net.



Profil

icon Re: MySQL, rezervacije, datumski upit13.02.2009. u 12:54 - pre 184 meseci
Hvala Bogdane na sugestijama i detaljnom odgovoru.
Trebalo mi je malo vremena da na osnovu tvog odgovora napravim sledece:

Code:

mysql> show tables;
+-----------------+
| Tables_in_baza1 |
+-----------------+
| tbl_kapacitet   | 
| tbl_objekat     | 
| tbl_rez_objekat | 
| tbl_rezervacija | 
+-----------------+


tabela: tbl_kapacitet //* Polje 'ob_id' ima ovaj tip radi lakseg prepoznavanja.
Code:

| tbl_kapacitet | CREATE TABLE `tbl_kapacitet` (
  `ob_id` char(2) NOT NULL,
  `lezaja` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 

mysql> select * from tbl_kapacitet; //* Da li je u ovoj tbl potrebno staviti i kap_id.
+-------+--------+
| ob_id | lezaja |
+-------+--------+
| AA    |     80 | 
| BB    |     60 | 
| CC    |    100 | 
| DD    |     40 | 
+-------+--------+


tabela: tbl_objekat
Code:

| tbl_objekat | CREATE TABLE `tbl_objekat` (
  `ob_id` char(2) NOT NULL,
  `ob_naziv` varchar(50) NOT NULL,
  PRIMARY KEY  (`ob_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 

mysql> select * from tbl_objekat;
+-------+-----------+
| ob_id | ob_naziv  |
+-------+-----------+
| AA    | objekat_A | 
| BB    | objekat_B | 
| CC    | objekat_C | 
| DD    | objekat_D | 
+-------+-----------+


tabela: tbl_rez_objekat //*
Code:

| tbl_rez_objekat | CREATE TABLE `tbl_rez_objekat` (
  `rez_id` int(11) NOT NULL,
  `ob_id` char(2) NOT NULL,
  `osoba` int(11) NOT NULL,
  KEY `rez_id` (`rez_id`),
  KEY `ob_id` (`ob_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 

mysql> select * from tbl_rez_objekat;
+--------+-------+-------+
| rez_id | ob_id | osoba |
+--------+-------+-------+
|      1 | AA    |    20 | 
|      1 | BB    |    30 | 
|      2 | AA    |    30 | 
|      2 | CC    |    40 | 
|      3 | BB    |    30 | 
|      4 | CC    |    20 | 
|      5 | AA    |    30 | 
|      5 | BB    |    10 | 
|      6 | CC    |    50 | 
|      6 | AA    |    20 | 
+--------+-------+-------+


tabela: tbl_rezervacija //* Polje 'status' daje status rezervacije da li je potvrdjena ili ne (1 ili 0),
Polje 'opcija' je datum do kada treba potvrditi rezervaciju ako vec nije.
Code:

| tbl_rezervacija | CREATE TABLE `tbl_rezervacija` (
  `rez_id` int(20) NOT NULL auto_increment,
  `dolazak` date NOT NULL,
  `odlazak` date NOT NULL,
  `rez_naziv` varchar(100) NOT NULL,
  `status` tinyint(2) NOT NULL,
  `opcija` date NOT NULL,
  `rezervisao` enum('pera','zika','mika') NOT NULL,
  PRIMARY KEY  (`rez_id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 | 

mysql> select * from tbl_rezervacija;
+--------+------------+------------+-----------+--------+------------+------------+
| rez_id | dolazak    | odlazak    | rez_naziv | status | opcija     | rezervisao |
+--------+------------+------------+-----------+--------+------------+------------+
|      1 | 2009-03-10 | 2009-02-20 | skup1     |      1 | 2009-03-05 | pera       | 
|      2 | 2009-03-15 | 2009-02-25 | skup2     |      0 | 2009-03-10 | zika       | 
|      3 | 2009-04-05 | 2009-04-10 | skup3     |      1 | 2009-03-30 | mika       | 
|      4 | 2009-05-17 | 2009-05-20 | skup4     |      0 | 2009-05-01 | zika       | 
|      5 | 2009-06-08 | 2009-06-12 | skup5     |      1 | 2009-05-30 | pera       | 
|      6 | 2009-04-27 | 2009-04-30 | skup6     |      1 | 2009-04-15 | mika       | 
+--------+------------+------------+-----------+--------+------------+------------+


Sada sam napravio nekoliko pogleda na osnovu tvojih upita.
Ovo ponavljam jer mi je lakse da pratim pratim upite a verujem i vecini pocetnika.

1. vew_KapPoObjektima
Code:

SELECT tbl_objekat.ob_naziv, tbl_kapacitet.lezaja 
FROM `tbl_objekat`,`tbl_kapacitet` 
WHERE tbl_objekat.ob_id = tbl_kapacitet.ob_id
+-----------+--------+
| ob_naziv  | lezaja |
+-----------+--------+
| objekat_A |     80 | 
| objekat_B |     60 | 
| objekat_C |    100 | 
| objekat_D |     40 | 
+-----------+--------+


2. vew_Rezervacije
Code:

SELECT * FROM `tbl_rezervacija`join `tbl_rez_objekat` using (rez_id);
mysql> select * from vew_Rezervacije;
+--------+------------+------------+-----------+--------+------------+------------+-------+-------+
| rez_id | dolazak    | odlazak    | rez_naziv | status | opcija     | rezervisao | ob_id | osoba |
+--------+------------+------------+-----------+--------+------------+------------+-------+-------+
|      1 | 2009-03-10 | 2009-02-20 | skup1     |      1 | 2009-03-05 | pera       | AA    |    20 | 
|      1 | 2009-03-10 | 2009-02-20 | skup1     |      1 | 2009-03-05 | pera       | BB    |    30 | 
|      2 | 2009-03-15 | 2009-02-25 | skup2     |      0 | 2009-03-10 | zika       | AA    |    30 | 
|      2 | 2009-03-15 | 2009-02-25 | skup2     |      0 | 2009-03-10 | zika       | CC    |    40 | 
|      3 | 2009-04-05 | 2009-04-10 | skup3     |      1 | 2009-03-30 | mika       | BB    |    30 | 
|      4 | 2009-05-17 | 2009-05-20 | skup4     |      0 | 2009-05-01 | zika       | CC    |    20 | 
|      5 | 2009-06-08 | 2009-06-12 | skup5     |      1 | 2009-05-30 | pera       | AA    |    30 | 
|      5 | 2009-06-08 | 2009-06-12 | skup5     |      1 | 2009-05-30 | pera       | BB    |    10 | 
|      6 | 2009-04-27 | 2009-04-30 | skup6     |      1 | 2009-04-15 | mika       | CC    |    50 | 
|      6 | 2009-04-27 | 2009-04-30 | skup6     |      1 | 2009-04-15 | mika       | AA    |    20 | 
|     10 | 2009-02-10 | 2009-02-20 | skup7     |      1 | 2009-02-09 | pera       | AA    |    50 | 
|     10 | 2009-02-10 | 2009-02-20 | skup7     |      1 | 2009-02-09 | pera       | CC    |    30 | 
+--------+------------+------------+-----------+--------+------------+------------+-------+-------+


3. vew_ZauzeceObjektiDanas
Code:

SELECT tbl_rez_objekat.ob_id, SUM(tbl_rez_objekat.osoba) AS zuzeto
FROM `tbl_rezervacija` join `tbl_rez_objekat` using (rez_id)
WHERE tbl_rezervacija.dolazak <= now() AND tbl_rezervacija.odlazak >= now() group by ob_id
+-------+--------+
| ob_id | zuzeto |
+-------+--------+
| AA    |     50 | 
| CC    |     30 | 
+-------+--------+


4. vew_SlobodnoObjektiDanas
Code:

SELECT tbl_rez_objekat.ob_id, tbl_kapacitet.lezaja - SUM(tbl_rez_objekat.osoba) AS slobodno 
FROM `tbl_rezervacija` join `tbl_rez_objekat` USING (rez_id) join tbl_kapacitet ON (tbl_kapacitet.ob_id = tbl_rez_objekat.ob_id) 
WHERE tbl_rezervacija.dolazak <= now() AND tbl_rezervacija.odlazak >= now() group by ob_id;
+-------+----------+
| ob_id | slobodno |
+-------+----------+
| AA    |       30 | 
| CC    |       70 | 
+-------+----------+


Potreban mi je jedan zaista slozen upit koji bi u jednoj koloni davao sve datume u godini hronoloski,
a u ostalim kolonama izvestaj o slobodnim lezajima za svaki objekat.
Nesto ovako:
Code:

+------------+-----------+-----------+-----------+-----------+
| Datum      | objekat_A | objekat_B | objekat_C | objekat_D |
+------------+-----------+-----------+-----------+-----------+
| 2009-01-01 |        20 |        50 |         0 |         0 | 
| 2009-01-02 |        20 |        50 |         5 |         0 | 
| 2009-01-03 |        20 |         0 |         5 |        10 | 
+------------+-----------+-----------+-----------+-----------+


Da li je za ovakav upit potrebno napraviti tbl_kalendar pa onda pozivati za svaki dan u godini odredjeni upit,
(verujem da nije tako ali sam nesto slicno radio u Excelu) ili na neki drugi nacin.
Da li je potrebno definisati jos neke tabele ili se ovakav upit moze uraditi sa postojecim.

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL, rezervacije, datumski upit13.02.2009. u 15:53 - pre 184 meseci
Citat:

tabela: tbl_kapacitet //* Polje 'ob_id' ima ovaj tip radi lakseg prepoznavanja.


dodaj mu NAME pa ga prepoznaj .. ob1 nije nista deskriptivniji od 1 a koristis char kao primary key koji je 10000000000x sporiji od int-a kao primary key

Citat:

mysql> select * from tbl_kapacitet; //* Da li je u ovoj tbl potrebno staviti i kap_id.

ne, zasto bi stavio id kapaciteta, nije da za isti objekat mozes da imas 2 vrednosti za kapacitet ... tu ti je objekat primarni kljuc


Citat:

Ovo ponavljam jer mi je lakse da pratim pratim upite a verujem i vecini pocetnika.


jedan hint ... kada koristis mysql cli, umesto sa ; (tackazarez) mozes da zavrsis komandy sa \G ... tada ti mysql vradi rezultat jedan po jedan red sto je za show create table super...

SHOW CREATE TABLE tbl_objekat\G

(nema nigde tackazarez .. probaj :) )


Citat:

Potreban mi je jedan zaista slozen upit koji bi u jednoj koloni davao sve datume u godini hronoloski,
a u ostalim kolonama izvestaj o slobodnim lezajima za svaki objekat.


pa, treba ti rezultat svih datuma koji onda pomnozis sa rezultatom za "danas" samo umesto "danas" koristis rezultat svih datuma i dobijes to sto si hteo. jasno? problem je samo dobiti "rezultat svih datuma"

Citat:

Da li je za ovakav upit potrebno napraviti tbl_kalendar pa onda pozivati za svaki dan u godini odredjeni upit,
(verujem da nije tako ali sam nesto slicno radio u Excelu) ili na neki drugi nacin.
Da li je potrebno definisati jos neke tabele ili se ovakav upit moze uraditi sa postojecim.


pa .. nema jednostavnog resenja tu .. na zalost ... mozes da napravis neki UDF ili da napises stored procedure koja ce to da odradi ... nema (da ja znam) nacin da sa SELECT nesto(A,B); dobijes sve datume od A do B, (tj pre bi bilo nesto tipa select * from nesto(A,B);)...

sada, kako to izvesti ... mozes tuzno, iz svog klijenta da ponovis onaj upit za "danas" sa nekim datumom umesto now() i tamo da iterises kroz datume koji te zanimaju ... to je najsporiji ali najjednostavniji nacin ... sledeci po redu, patetican, neprofesionalan ali super jednostavan je da napravis tabelu sa brdo integera
create table patetika (int broj); insert into patetika (1),(2),(3),(4),(5),(6).... ,(365); -- ovde ne moze .... nego moras da ubacis po redu sve brojeve :( onoliko njih koliki te period zanima
i onda radis nesto tipa
Code:

-- daj sve datume od "sad" pa narednih 30 dana
SELECT NOW() + INTERVAL (patetilka.broj DAY) FROM patetika order by patetika.broj asc  limit 30;


tako da onda onaj tvoj upit ponozis sa ovim i dobijes to sto ti treba
Code:

SELECT 
  x.datum AS Datum, 
  (SELECT  tbl_kapacitet.lezaja - SUM(tbl_rez_objekat.osoba) FROM `tbl_rez_objekat` join tbl_kapacitet USING (ob_id) WHERE tbl_rezervacija.dolazak = x.datum AND tbl_kapacitet.ob_id = 1) AS objekat1, 

  (SELECT  tbl_kapacitet.lezaja - SUM(tbl_rez_objekat.osoba) FROM `tbl_rez_objekat` join tbl_kapacitet USING (ob_id) WHERE tbl_rezervacija.dolazak = x.datum AND tbl_kapacitet.ob_id = 2) AS objekat2, 

  (SELECT  tbl_kapacitet.lezaja - SUM(tbl_rez_objekat.osoba) FROM `tbl_rez_objekat` join tbl_kapacitet USING (ob_id) WHERE tbl_rezervacija.dolazak = x.datum AND tbl_kapacitet.ob_id = 3) AS objekat3, 

  (SELECT  tbl_kapacitet.lezaja - SUM(tbl_rez_objekat.osoba) FROM `tbl_rez_objekat` join tbl_kapacitet USING (ob_id) WHERE tbl_rezervacija.dolazak = x.datum AND tbl_kapacitet.ob_id = 4) AS objekat4

FROM (SELECT DATE_ADD(NOW() + INTERVAL patetilka.broj DAY) datum  FROM patetika order by patetika.broj asc  limit 30) x;


problem sa ovim pateticnim resenjem je sto ako sutra dodas peti objekat - ne radi ... sada, to mozes da resis tako sto ces da upit "generises" ali sve u svemu
- ovakav koncept nije ok posto broj kolona u reportu treba da bude statican a ne da zavisi od sadrzaja
- ovo je sporoooooooo
ali .. radi to sto si hteo

treci nacin (kako treba) je da napravis stored proceduru ... ja ih organski ne podnosim tako da necu da ti pisem kako bi to islo :D probaj sam ako te zanima :) pa ako zapnes kukaj da popravljamo.

nadam se da ti ovo pomaze
 
Odgovor na temu

[es] :: MySQL :: MySQL, rezervacije, datumski upit

[ Pregleda: 1667 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.