Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.486 pregleda

Najnovija ↓

Da li je ovaj upit uopšte moguć? 13.06.2007. u 15:49 · pre 236 meseci #1
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.
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Da li je ovaj upit uopšte moguć? 13.06.2007. u 16:46 · pre 236 meseci #2
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.
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: Da li je ovaj upit uopšte moguć? 14.06.2007. u 12:18 · pre 235 meseci #3
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.
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme