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

Da li je ovaj upit uopšte moguć?

[es] :: MySQL :: Da li je ovaj upit uopšte moguć?

[ Pregleda: 536 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tyler Durden
System administrator
Beograd

SuperModerator
Član broj: 4312
Poruke: 1877
*.vdial.verat.net.

Jabber: Tyler@elitesecurity.org
ICQ: 70139169


Profil

icon Da li je ovaj upit uopšte moguć?13.06.2007. u 14:49

Imam ovakvu tabelu.

+------------+------------+---------------+
| datum1 | datum2 | neki_proizvod |
+------------+------------+---------------+
| 1998-09-21 | 2000-01-01 | proizvod1 |
| 2001-01-15 | 2002-01-15 | proizvod2 |
| 2001-02-15 | 2002-02-15 | proizvod3 |
| 2002-04-02 | 2003-04-02 | proizvod2 |
| 2003-05-19 | 2005-04-19 | proizvod2 |
+------------+------------+---------------+

Meni je potrebno da upitom dođem do ovakvog rezultata:
Datum 1. unosa | Datum zadnjeg produzenja | Datum kad istice | Naziv proizvoda
| 1998-09-21 | 1998-09-21 | 2000-01-01 | proizvod1
| 2001-02-15 | 2001-02-15 | 2002-02-15 | proizvod3
| 2001-01-15 | 2003-05-19 | 2005-04-19 | proizvod2


Dakle, neki proizvodi se ponavljaju, a neki imaju samo jedan unos. Potrebno mi je za one koji se jednom pojavljuju da izvučem unos i postavim datum1 kao prve dvije kolone u rezultatu (i to nije problem) i potrebno mi je za one koji koji se ponavljaju da uzmem datum1 od prvog unosa i kao prvu kolonu u rezultatu i datum1 i datum2 od zadnjeg unosa kao kolonu 2 i 3 u rezultatu što mi nikako ne uspijeva.

Nadam se da sam bio jasan šta pokušavam da uradim.
..:: If my love for her has an expiration date, let it be 10,000 years... ::..
13.06.2007. u 14:49 

chachka
Srđan Mijatov
Subotica

Član broj: 53780
Poruke: 510
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


Profil

icon Re: Da li je ovaj upit uopšte moguć?13.06.2007. u 15:46
Naravno da moze. Doduse provereno je na PostgreSQL 8.2:
Code:

SELECT c.neki_proizvod AS naziv_proizvoda,
       MAX(c.datum1) AS datum_prvog_unosa,
       MAX(c.datum2) AS datum_zadnjeg_produzenja,
       MAX(c.datum3) AS datum_kad_istice
  FROM (SELECT neki_proizvod,
               MIN(datum1) AS datum1,
               CAST(NULL AS DATE) AS datum2,
               CAST(NULL AS DATE) AS datum3
          FROM neka_tabela
         GROUP BY neki_proizvod
         UNION ALL
        SELECT b.neki_proizvod,
               CAST(NULL AS DATE) AS datum1,
               b.datum1 AS datum2,
               b.datum2 AS datum3
          FROM (SELECT neki_proizvod, MAX(datum1) AS datum
                  FROM neka_tabela
                 GROUP BY neki_proizvod
               ) AS a
               INNER JOIN
               neka_tabela AS b
                 ON a.neki_proizvod = b.neki_proizvod
                AND a.datum = b.datum1
        ) AS c
 GROUP BY c.neki_proizvod
 ORDER BY c.neki_proizvod;

Ideja resenja je identicna ideji koja je primenjena u temi SQL pomoc.Hitno!, samo sto se ovde dve kolone s podacima dele na tri kolone, a tamo je jedna kolona bila deljena dve kolone.
"The best code is no code at all." - Zidar
"biggest obstacle to learning SQL is unlearning procedural programming" - Joe Celko
13.06.2007. u 15:46 

Tyler Durden
System administrator
Beograd

SuperModerator
Član broj: 4312
Poruke: 1877
*.vdial.verat.net.

Jabber: Tyler@elitesecurity.org
ICQ: 70139169


Profil

icon Re: Da li je ovaj upit uopšte moguć?14.06.2007. u 11:18
Radi!
Bravo, šta drugo da kažem :)

Moram sad da se uhvatim izučavanja ovog upita... možda budem imao neko pitanje još ako mi bude nejasno.
..:: If my love for her has an expiration date, let it be 10,000 years... ::..
14.06.2007. u 11:18 

[es] :: MySQL :: Da li je ovaj upit uopšte moguć?

[ Pregleda: 536 | Odgovora: 2 ]

Postavi temu Odgovori

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