[ MrLimeni @ 02.08.2006. 12:25 ] @
Dakle nekim upit dosao sam do sledece tabele:
Code:

| ProizvodID | DobavljacID | Datum |
--------------------------------------
| 000001     |    143      | 23.05.2006 |
| 000001     |    143      | 03.03.2006 |
| 000001     |    325      | 01.02.2006 |
| 160001     |    258      | 18.11.2006 |
| 160001     |    158      | 21.01.2006 |
| 150604     |    234      | 08.07.2006 |
| 150604     |    224      | 01.05.2006 |
| 150604     |    268      | 23.03.2006 |


a iz nje treba da dobijem sledecu tabelu

Code:

| ProizvodID | DobavljacID |
---------------------------
| 000001     |    143       |
| 160001     |    258       |
| 150604     |    234       |

dakle ovo sam izukao za svaki ProizvodID .. DobavljacID... ciji je datum poslednji za taj proizvod. Dakle, to mi treba da znam od kog sam dobavljaca zadnji put dobio koji proizvod. Dakle za svaki proizvod da znam koji je to dobavljac. E ja ne znam kako da iz prve tabele dobijem ovu drugu. Ima li ko resenje.. sugestiju :)
[ jablan @ 02.08.2006. 12:37 ] @
http://www.devprotalk.com/t132...ovija-iz-svake-kategorije.html
[ MrLimeni @ 02.08.2006. 20:00 ] @
Napravio ovaj upit. Ali posto je to na poslu i ima dooosta artikala 10000 i sad zamislite koliko ima jos isporuka. pa sad naci onu koja je zadnja...ludilo.. upit mi radi 30sekundi. Inace baza je MSSQL.

jablanov post mi je pomogao.. Samo rekoh da ne zna neko postoji li sansa da se napravi neki upit koji ce malo brze radit?

[ vujkev @ 02.08.2006. 20:04 ] @
To mora da radi mnogo brže. Postavi SQL koji si napravio
[ MrLimeni @ 02.08.2006. 20:27 ] @
dakle ako je view koji mi vraća prvu tabelu "isporuke" onda upit izgleda ovako
Code:

SELECT DISTINC ProizvodID, (SELECT TOP 1 DobavljacID
                              FROM isporuke I2
                              WHERE I2.ProizvodID = I1.ProizvodID
                              ORDER BY Datum DESC) DobavljacID
FROM isporuke I1


Dakle i ovaj view "isporuke" nije bas da je lagan ali, ne radi ovako dugo.
[ chachka @ 02.08.2006. 21:26 ] @
Mozda MAX radi brze od TOP 1 ... ORDER BY?
Code:

SELECT I1.ProizvodID, I1.DobavljacID
  FROM isporuke AS I1
 WHERE I1.Datum = (SELECT MAX(I2.Datum)
                     FROM isporuke AS I2
                    WHERE I1.ProizvodID = I2.ProizvodID);
[ jablan @ 03.08.2006. 08:00 ] @
Ako i ovo chackino bude sporo, napiši ovde strukture tabela (sa indeksima), kao i šta radi taj view.
[ MrLimeni @ 03.08.2006. 09:13 ] @
Sa ovim spustilo se na 15 sekundi. Mislim da mi je pala ideja kako mogu da smanjim i ovo. Javicu vam jesam li uspio. Svakako hvala vam puno i za ovo.
[ chachka @ 03.08.2006. 09:28 ] @
probaj i JOIN
Code:

SELECT I1.ProizvodID, MAX(I1.DobavljacID)
  FROM isporuke AS I1
       JOIN isporuke AS I2
         ON I1.ProizvodID = I2.ProizvodID
 GROUP BY I1.ProizvodID, I1.Datum
HAVING I1.Datum = MAX(I2.Datum)