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

Spajanje tabela uz uslov 'poslednji slog iz grupe'

[es] :: MySQL :: Spajanje tabela uz uslov 'poslednji slog iz grupe'

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vortex77

Član broj: 91694
Poruke: 124
80.74.160.*



+1 Profil

icon Spajanje tabela uz uslov 'poslednji slog iz grupe'25.12.2006. u 09:26 - pre 194 meseci
Molim za pomoc !

Imam dve tabele i polja:

tabela1 sadrzi polja : id1 naziv1 datum1 id2
tabela2 sadrzi polja : id2 naziv2 datum2

Kao rezultat treba da dobijem tabelu :

id1 naziv1 datum1 id2 naziv2 datum2

tako da je zadovoljen uslov: tabela2.id2 = tabela1.id2 and tabela2.datum2 <= tabela1.datum1.
Ako vise slogova tabele2 zadovoljava uslov tada treba prikazati poslednji slog.

Primer:

tabela1 1 naz-1 03.12.2006 3
2 naz-2 08.09.2006 3
3 naz-3 17.10.2006 5
4 naz-4 20.12.2006 5

tabela2 3 ime-3.1 01.09.2006
3 ime-3.2 01.11.2006
3 ime-3.3 15.12.2006
5 ime-5.1 01.06.2006
5 ime-5.2 13.12.2006

Rezultat :

1 naz-1 03.12.2006 3 ime-3.2 01.11.2006
2 naz-2 08.09.2006 3 ime-3.1 01.09.2006
3 naz-3 17.10.2006 5 ime-5.1 01.06.2006
4 naz-4 20.12.2006 5 ime-5.2 13.12.2006
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.dialup.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Spajanje tabela uz uslov 'poslednji slog iz grupe'25.12.2006. u 12:02 - pre 194 meseci
Bilo bi lepo da si umesto svojih metapodataka dao metapodatke u standardnom SQL
zapisu kao:
Code:

CREATE TABLE tabela1 (
  id1 INTEGER,
  naziv1 VARCHAR(20),
  datum1 DATE,
  id2 INTEGER);
  
CREATE TABLE tabela2 (
  id2 INTEGER,
  naziv2 VARCHAR(20),
  datum2 DATE);

INSERT INTO tabela1 (id1, naziv1, datum1, id2) VALUES (1, 'naz-1', '03.12.2006', 3);
INSERT INTO tabela1 (id1, naziv1, datum1, id2) VALUES (2, 'naz-2', '08.09.2006', 3);
INSERT INTO tabela1 (id1, naziv1, datum1, id2) VALUES (3, 'naz-3', '17.10.2006', 5);
INSERT INTO tabela1 (id1, naziv1, datum1, id2) VALUES (4, 'naz-4', '20.12.2006', 5);

INSERT INTO tabela2 (id2, naziv2, datum2) VALUES (3, 'ime-3.1', '01.09.2006');
INSERT INTO tabela2 (id2, naziv2, datum2) VALUES (3, 'ime-3.2', '01.11.2006');
INSERT INTO tabela2 (id2, naziv2, datum2) VALUES (3, 'ime-3.3', '15.12.2006');
INSERT INTO tabela2 (id2, naziv2, datum2) VALUES (5, 'ime-5.1', '01.06.2006');
INSERT INTO tabela2 (id2, naziv2, datum2) VALUES (5, 'ime-5.2', '13.12.2006');

To bi ustedelo vreme ljudima koji su voljni da ti pomognu.

Resenje je:
Code:

SELECT t12.id1, t12.naziv1, t12.datum1, t12.id2, t3.naziv2, t12.datum2
  FROM (SELECT t1.id1, t1.naziv1, t1.datum1, t1.id2, MAX(t2.datum2) AS datum2
          FROM tabela1 AS t1
               INNER JOIN
               tabela2 AS t2
                 ON t2.id2 = t1.id2
                AND t2.datum2 <= t1.datum1
         GROUP BY t1.id1, t1.naziv1, t1.datum1, t1.id2
        HAVING MAX(t2.datum2) <= t1.datum1
       ) AS t12
       INNER JOIN
       tabela2 AS t3
         ON t12.id2 = t3.id2
        AND t12.datum2 = t3.datum2
 ORDER BY t12.id1

"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
 
Odgovor na temu

vortex77

Član broj: 91694
Poruke: 124
80.74.160.*



+1 Profil

icon Re: Spajanje tabela uz uslov 'poslednji slog iz grupe'25.12.2006. u 13:15 - pre 194 meseci
Najlepsa HVALA !

Sto se tice zapisa, propust se nece ponoviti.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.dialup.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Spajanje tabela uz uslov 'poslednji slog iz grupe'25.12.2006. u 13:41 - pre 194 meseci
Nema na cemu.

Inace, red sa HAVING klauzulom nije potreban.
"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
 
Odgovor na temu

[es] :: MySQL :: Spajanje tabela uz uslov 'poslednji slog iz grupe'

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

Postavi temu Odgovori

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