Novo

Forum kao aplikacija na telefonu

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

  • 7 odgovora
  • 3.185 pregleda

Najnovija ↓

Problem sa inner join upitom 14.06.2009. u 10:49 · pre 211 meseci #1
Hi,
Imam dve tabele koje sadrze popisne
artikle iz raznih perioda.
Kada probam da napravim upit
Code:

SELECT zalihe_a.sifra,zalihe_a.Kolicina as kol1,zalihe_b.Kolicina as kol2 FROM zalihe_a
inner join zalihe_b on zalihe_a.sifra=zalihe_b.sifra
GROUP BY zalihe_a.sifra

ne dobijem sve rezultate.
primer:
Code:

+------+------+
| sifra  | kolicina    // >>> zalihe_a
+------+------+
| 15   | 1038 |  
| 3    |  2169 |  
| 100  |  257  | 
| 20   |  600  |  
+------+------+

+------+------+
| sifra  | kolicina     // >>> zalihe_b
+------+------+
| 18     | 200   |  
| 3      | 4025  |  
| 92     | 1578 | 
| 20     | 1025 |  
+------+------+

Ono sto ja dobijam je:
Code:

+------+------+-------+
| sifra | kol1 | kol2                // >>> rezultat
+------+------+-------+
| 3   | 2169 | 4025 |
| 20  | 600  | 1025 |
+------+------+-------+

a u stvari treba mi:
Code:

+------+------+-------+
| sifra| kol1  | kol2                // >>> rezultat
+------+------+-------+
| 18     | 200  |  0  |
| 20     | 600  |1025 |
| 92     | 2169 | 0   |
| 20     | 600  |1025 |
...............................
...............................
+------+------+-------+

Jednostavno ne spaja ako nisu obe sifre
zavedene u obe tabele.
A meni trebaju sve sifre i ako ne postoji u drugoj tabeli
dodeliti vrednost '0' nula.
Hvala unapred
Re: Problem sa inner join upitom 14.06.2009. u 19:16 · pre 211 meseci #3
dobio sam relativno slicno sa:
Code:

SELECT * FROM artikli
LEFT OUTER JOIN zalihe_a on artikli.sifra=zalihe_a.sifra
LEFT OUTER JOIN zalihe_b on artikli.sifra=zalihe_b.sifra

jedino sto,
mi izlistava SVE sifre iako nema kolicine u zalihama a i b.
Interesuje me da li postoji nesto konkretnije za moj slucaj
ili moram da pravim view od ovog upita
pa da sortiram po kolicinama etc... da bih
dobio vrednosti sifara sa kolicinama iz obe
tabele zaliha koje samo postoje?

Jednostavno ukoliko nema sifre u zalihama a ili b
da ne izlistava, a ukoliko ima u 'a' a ne u 'b'
da rezlutat izgleda ovako
Code:

sifra     |  kol_a    |   kol_b

12       |    NULL   |      15                  // znaci ima u zalihama_b,
3        |    20     |    NULL                // znaci ima u zalihama_a, samo
15       |    17     |      19                // znaci ima u zalihama_b i zalihama_a  
etc...........................

33      |   NULL    |    NULL             // ovako nesto bih izbegao, tu je i poenta mog pitanja

Ako je problem, ja cu iskoristiti prvo resenje
malo improvizovati i to je to
Hvala
Re: Problem sa inner join upitom 14.06.2009. u 19:40 · pre 211 meseci #4
Code:
SELECT sifra, sum(zalihe_a.kolicina), sum(zalihe_b.kolicina) FROM artikli
LEFT OUTER JOIN zalihe_a on artikli.sifra=zalihe_a.sifra
LEFT OUTER JOIN zalihe_b on artikli.sifra=zalihe_b.sifra
where sum(zalihe_a.kolicina) > 0 or sum(zalihe_b.kolicina) > 0
group by sifra
Re: Problem sa inner join upitom 14.06.2009. u 21:21 · pre 211 meseci #5
Prijavljuje mi "Invalid use of group function"
cak i kad maknem group by !

ali ok
Code:

where sum(zalihe_a.kolicina) > 0 or sum(zalihe_b.kolicina) > 0

mislim da ce resiti,
bar cu probati neku varijaciju
Re: Problem sa inner join upitom 14.06.2009. u 21:32 · pre 211 meseci #6
Sorry, probaj:

Code:
SELECT artikli.sifra, sum(zalihe_a.kolicina), sum(zalihe_b.kolicina) FROM artikli
LEFT OUTER JOIN zalihe_a on artikli.sifra=zalihe_a.sifra
LEFT OUTER JOIN zalihe_b on artikli.sifra=zalihe_b.sifra
group by artikli.sifra
having sum(zalihe_a.kolicina) > 0 or sum(zalihe_b.kolicina) > 0


Trebalo je da ostaviš skripte koje kreiraju test tabele da bismo mogli da probavamo upite koje kačimo...
Re: Problem sa inner join upitom 14.06.2009. u 21:46 · pre 211 meseci #8
E pa nije... :)

Upit ne radi kako treba ako u nekoj tabeli količina imaš više od jednog reda za istu šifru.

Ovo je bolje (nije probano na MySQL):
Code:
select sifra, sum(kolicina_a), sum(kolicina_b)
from
(
select sifra, kolicina as kolicina_a, 0 as kolicina_b
from zalihe_a
union all
select sifra, 0, kolicina
from zalihe_b
) a
group by sifra

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme