DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > SQL baze podataka - Sponzor: Baze-Podataka.net
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka

Odgovori
 
Alati teme Način prikaza
Staro 04. 09. 2011.   #1
razno
Miljenko Rebernišak
Qualified
 
Avatar razno
 
Datum učlanjenja: 05.03.2009
Lokacija: Jagodina-Beograd
Poruke: 191
Hvala: 4
25 "Hvala" u 22 poruka
razno is on a distinguished road
Default Sumiranje parova

Pozdrav,

imam jedan problem na kome sam zakucao.
Najme imam tabelu Skup_proizvoda(ID1,ID2,broj)
ID1 i ID2 referenciraju tabelu proizvodi. Ono sto treba da uradim je da izbacim sumu brojeva za svaki par. Par se moze pojavljivati vise puta. Takodje pod jednim parom se podrazumeva 1|2 i 2|1
Evo primer podatak
ID1|ID2|broj
------------
1|2|10
2|1|20
1|3|5
Ocekivani rezultat treba da bude
ID1|ID2|BROJ
-------------
1|2|30
1|3|5

Resenje treba da bude cist SQL
__________________
Me on twitter
razno je offline   Odgovorite uz citat
Staro 04. 09. 2011.   #2
webarto
expert
Grand Master
 
Avatar webarto
 
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
webarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished road
Default

PHP kôd:
SELECT t2.id_1t2.id_2SUM(t1.brojbroj
FROM dpt t1
LEFT JOIN dpt t2 ON t1
.id_1 t2.id_2
WHERE t1
.id_2 t2.id_1 
id_1 id_2 broj
1 2 30

E sad jedino još da selektuje ove single parove...
__________________
Github // LinkedIn // PHP // ZCE // Stackoverflow PHP // Site5 Web Hosting
webarto je offline   Odgovorite uz citat
"Hvala" webarto za poruku:
Staro 04. 09. 2011.   #3
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Ja bih rađe to uradio sa ugnježđenim upitom da dovedem ID1 i ID2 u red, pa onda nad time običan GROUP BY.

Znači nešto na foru
Kôd:
SELECT id1, id2, sum(broj) FROM
(
  SELECT
  CASE WHEN id1 > id2 THEN id2 ELSE id1 AS id1,
  CASE WHEN id1 > id2 THEN id1 ELSE id2 AS id2,
  broj
  FROM dpt
) a
GROUP BY id1, id2
__________________
blog
jablan je offline   Odgovorite uz citat
"Hvala" jablan za poruku:
Staro 05. 09. 2011.   #4
razno
Miljenko Rebernišak
Qualified
 
Avatar razno
 
Datum učlanjenja: 05.03.2009
Lokacija: Jagodina-Beograd
Poruke: 191
Hvala: 4
25 "Hvala" u 22 poruka
razno is on a distinguished road
Default

@webarto Ne ispisuje sve redove, tj ispisuje one koji se javljaju u obe varijante dok oni koji su u jednoj ne ispisuje. Hvala u svakom slucaju na odgovoru

@Jablan da to je to resenje.

Sad vidim kako je prosto, ali kad ti nije dan, nije ti
__________________
Me on twitter
razno je offline   Odgovorite uz citat
Staro 05. 09. 2011.   #5
webarto
expert
Grand Master
 
Avatar webarto
 
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
webarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished road
Default

Da, napisao sam to @jablan, znaš li ti možda da prepraviš ovaj moj query, a da vraća oba rezultata, ili ovaj suprotni Hvala.
__________________
Github // LinkedIn // PHP // ZCE // Stackoverflow PHP // Site5 Web Hosting
webarto je offline   Odgovorite uz citat
Staro 06. 09. 2011.   #6
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Teško bogami. Mislim da nije dobar put. Imaš banalan primer, npr da imaš u tabeli

Kôd:
1 2 10
1 2 10
2 1 10
2 1 10
u JOINU ćeš onda imati 8 redova kao rezultat, tj suma će ti biti 80, a ne 40, zar ne?
__________________
blog
jablan je offline   Odgovorite uz citat
"Hvala" jablan za poruku:
Staro 06. 09. 2011.   #7
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

evo ovako:
Kôd:
SELECT t1.id1, t1.id2, IF(t2.id1, (t1.broj + t2.broj), t1.broj) AS broj
FROM proba t1
LEFT JOIN proba t2 ON (t1.id1 = t2.id2 AND t1.id2 = t2.id1)
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 06. 09. 2011.   #8
razno
Miljenko Rebernišak
Qualified
 
Avatar razno
 
Datum učlanjenja: 05.03.2009
Lokacija: Jagodina-Beograd
Poruke: 191
Hvala: 4
25 "Hvala" u 22 poruka
razno is on a distinguished road
Default

@ivanhoe Nece bas raditi kako treba. Radi sumiranje lepo, medjutim ne izbacuje duplikate iz rezultata (sto treba).
I ja sam krenuo da resavam sa join-om medjutim zakucao sam na tom delu izbacivanja duplih rezultata
__________________
Me on twitter
razno je offline   Odgovorite uz citat
Staro 06. 09. 2011.   #9
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Citat:
Originalno napisao ivanhoe Pogledajte poruku
evo ovako:
Nisam siguran da razumem ideju:

Kôd:
test=# create table dpt (id1 integer, id2 integer, broj integer);
CREATE TABLE
test=# insert into dpt values (1, 2, 10);
INSERT 0 1
test=# insert into dpt values (1, 2, 10);
INSERT 0 1
test=# insert into dpt values (2, 1, 10);
INSERT 0 1
test=# insert into dpt values (2, 1, 10);
INSERT 0 1
test=# insert into dpt values (1, 3, 10);
INSERT 0 1
test=# SELECT t1.id1, t1.id2, t1.broj + coalesce(t2.broj, 0) AS broj
FROM dpt t1
LEFT JOIN dpt t2 ON (t1.id1 = t2.id2 AND t1.id2 = t2.id1);
 id1 | id2 | broj 
-----+-----+------
   1 |   2 |   20
   1 |   2 |   20
   1 |   2 |   20
   1 |   2 |   20
   1 |   3 |   10
   2 |   1 |   20
   2 |   1 |   20
   2 |   1 |   20
   2 |   1 |   20
(9 rows)
__________________
blog
jablan je offline   Odgovorite uz citat
Staro 06. 09. 2011.   #10
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

da, da, nisam pazljivo procitao opis, ne resava se duplikata... mada mora da ima neka fora i ovako, trebalo bi da (skoro) svaki subquery moze da se resi i JOIN-om

EDIT: Evo ovo radi:
Kôd:
SELECT t1.`id1`, t1.id2, t1.broj + coalesce(t2.broj, 0) AS broj
FROM proba t1
LEFT JOIN proba t2 ON (t1.id1 = t2.id2 AND t1.id2 = t2.id1)
GROUP BY IF(t1.id1<t1.id2, t1.id1, t1.id2), IF(t1.id1 > t1.id2, t1.id1, t1.id2)
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 06. 09. 2011. u 16:12.
ivanhoe je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 09:26.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.