Forum » Programska oprema » Problem v Accessu
Problem v Accessu
poweroff ::
Imam neko mdb bazo, kjer sta dve tabeli: stranke in nakupi.
V bazi strank so podatki o strankah, v bazi nakupi pa eden ali več nakupov posamezne stranke.
Če rečem takole:
SELECT [stranke].Indeks, [stranke].Priimek, [stranke].Ime, [stranke].Naslov, [nakupi].Artikel
FROM stranke, nakupi
WHERE [nakupi].IndeksOsebe=[stranke].Indeks;
Dobim seznam vseh kupcev in njihovih nakupov, vendar tako, da če je kupec kupil dva artikla, dobim dve vrstici, recimo:
1; Novak; Janez; Ljubljanska 1; trdi disk
1; Novak; Janez; Ljubljanska 1; monitor
Jaz pa bi rad tak izpis, kjer bo vsaka stranka v eni sami vrstici, artikli pa bodo navedeni na koncu v stolpcih (recimo, da vem, da je vsak kupil največ 5 artiklov):
1; Novak; Janez; Ljubljanska 1; trdi disk; monitor; ; ; ;
Kako oblikovat iskalni query?
V bazi strank so podatki o strankah, v bazi nakupi pa eden ali več nakupov posamezne stranke.
Če rečem takole:
SELECT [stranke].Indeks, [stranke].Priimek, [stranke].Ime, [stranke].Naslov, [nakupi].Artikel
FROM stranke, nakupi
WHERE [nakupi].IndeksOsebe=[stranke].Indeks;
Dobim seznam vseh kupcev in njihovih nakupov, vendar tako, da če je kupec kupil dva artikla, dobim dve vrstici, recimo:
1; Novak; Janez; Ljubljanska 1; trdi disk
1; Novak; Janez; Ljubljanska 1; monitor
Jaz pa bi rad tak izpis, kjer bo vsaka stranka v eni sami vrstici, artikli pa bodo navedeni na koncu v stolpcih (recimo, da vem, da je vsak kupil največ 5 artiklov):
1; Novak; Janez; Ljubljanska 1; trdi disk; monitor; ; ; ;
Kako oblikovat iskalni query?
sudo poweroff
poweroff ::
Hmm, problem je, da Accessa ne znam uporabljati čisto nič. Ko pa podatke izvozim v txt bazo, jih pa potem z nekih drugim softwerom obdelam.
Tako da ne štekam povsem kaj moram narediti. Če prav razumem, je treba najprej narediti TRANSFORM. Vendar pa jaz ne rabim skupne vsote ali povprečja, pač pa fiksne podatke (imena izdelkov).
Tako da ne štekam povsem kaj moram narediti. Če prav razumem, je treba najprej narediti TRANSFORM. Vendar pa jaz ne rabim skupne vsote ali povprečja, pač pa fiksne podatke (imena izdelkov).
sudo poweroff
rognaj ::
Če je samo 5 nakupov, potem:
SELECT stranke.Indeks, stranke.Priimek, stranke.Ime, stranke.Naslov,
(select top 1 nakupi.artikel from nakupi where stranke.[Indeks] = nakupi.[NakupiOsebe] ORDER BY nakupi.Artikel) as PRVI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 1 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS DRUGI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 2 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS TRETJI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 3 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS CETRTI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 4 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS PETI
FROM stranke;
Če dodamo poleg Novak Janeza še "Ima Vse", ki ima 5 nakupov, potem dobiš:
Indeks Priimek Ime Naslov PRVI DRUGI TRETJI CETRTI PETI
1 Novak Janez Ljubljanska 1 Monitor Trdi disk
2 Ima Vse Testna 1 Prvi 2 Drugi 3 Tretji 4 Cetrti 5 Peti
Je pa v osnovi problem, da tabeli, ki sta povezani 1:n težko spraviš v eno vrstico (razen če imaš znan "n" in je ta "relativno" majhen). Lahko nastopijo problemi pri nakupu istih artiklov, zato je za razmisliti, če bi izvažal obe tabeli in jih nato obdelal v "drugem" programu.
SELECT stranke.Indeks, stranke.Priimek, stranke.Ime, stranke.Naslov,
(select top 1 nakupi.artikel from nakupi where stranke.[Indeks] = nakupi.[NakupiOsebe] ORDER BY nakupi.Artikel) as PRVI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 1 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS DRUGI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 2 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS TRETJI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 3 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS CETRTI,
(SELECT top 1 Nakupi.Artikel from Nakupi WHERE stranke.[Indeks] = nakupi.[NakupiOsebe] and Nakupi.Artikel NOT IN ( SELECT TOP 4 N.Artikel FROM Nakupi N WHERE stranke.[Indeks] = N.[NakupiOsebe] ORDER BY N.Artikel)) AS PETI
FROM stranke;
Če dodamo poleg Novak Janeza še "Ima Vse", ki ima 5 nakupov, potem dobiš:
Indeks Priimek Ime Naslov PRVI DRUGI TRETJI CETRTI PETI
1 Novak Janez Ljubljanska 1 Monitor Trdi disk
2 Ima Vse Testna 1 Prvi 2 Drugi 3 Tretji 4 Cetrti 5 Peti
Je pa v osnovi problem, da tabeli, ki sta povezani 1:n težko spraviš v eno vrstico (razen če imaš znan "n" in je ta "relativno" majhen). Lahko nastopijo problemi pri nakupu istih artiklov, zato je za razmisliti, če bi izvažal obe tabeli in jih nato obdelal v "drugem" programu.
poweroff ::
Eh, nekaj sem se zatipka. Sedaj pa deluje.
Super, hvala.
Kot vidiš, o Accessu nimam pojma, mi je pa malce pomagalo, da poznam vsaj osnove programiranja. Hvala še enkrat.
Super, hvala.
Kot vidiš, o Accessu nimam pojma, mi je pa malce pomagalo, da poznam vsaj osnove programiranja. Hvala še enkrat.
sudo poweroff
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Načrtovanje in omplementacija podatkovnih baz(pomoč)Oddelek: Programiranje | 863 (643) | mihies |
» | [SQL] PgAdmin preprosto vprasanje povezano s stolpci v tabeliOddelek: Programiranje | 2195 (1554) | Cvele2011 |
» | [Oracle] Osnovno povpraševanje problemOddelek: Programiranje | 1912 (1553) | zdravc |
» | MSSQL row lockOddelek: Programiranje | 1566 (1454) | inferno666 |
» | (Access) query po datumuOddelek: Programiranje | 1938 (1513) | imagodei |