Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Jak wyciągnąć dane ?
Forum PHP.pl > Forum > Przedszkole
boddah85
Witam

Pytanie w temacie może niezbyt dobrze sformułowane, ale innego pomysłu nie miałem. Przejdę jednak do sedna.

Mam tabelę :

produkt_id | ilosc | magazyn
----------------------------------
1 | 2 | MAG1
1 | 3 | MAG2
1 | 4 | MAG3
2 | 1 | MAG1
2 | 1 | MAG2
2 | 2 | MAG3
3 | 8 | MAG1
3 | 1 | MAG3

W efekcie chciałbym uzyskać sumę każdego produktu z wszystkich magazynów oraz ilość przypadającą tylko na konkretny magazyn.

Czyli np. dla MAG2

prod_id|suma_wszystkie_mag|ilosc_na_mag_MAG2
---------------------------------
1 | 9 | 3
2 | 4 | 1
3 | 9 | 0

Mam nadzieję, że zrozumieliście winksmiley.jpg Z góry dzięki za pomoc.
sadistic_son
Dla wszystkich magazynow:
  1. SELECT COUNT(produkt_id) FROM tabela
Dla konkretnego magazynu:
  1. SELECT COUNT(produkt_id) FROM tabela WHERE magazyn='MAG2'

Ale jeszcze wazna sprawa. Jesli rzeczywiscie tak wygladaja dane, ze w kazdym rekordie masz powtarzane MAG1, MAG2, MAG3 itp. to jest to zle skonstruowana baza. W takim wypadku powinienes stworzyc tabele 'magazyny' : id, nazwa i tam wpisac wszystkie magazyny a w tej pierwszej tabeli wpisywac tylko id danego magazynu.
boddah85
Dzięki za odpowiedź ale...

1) W dwóch zapytaniach nie mam problemu, żeby to zrobić, ale myślałem, że może da się to zrobić w jednym
2) I tak chyba nie do końca zostałem zrozumiany.

Dla wszystkich magazynów zrobiłbym tak :
  1. SELECT produkt_id,SUM(ilosc) FROM tabela GROUP BY produkt_id


Dla danego magazynu wyglądałoby to :
  1. SELECT produkt_id,ilosc FROM tabela WHERE magazyn = 'MAG2'


Jak już jednak powiedziałem - podejrzewałem, że można to zrobić lepiej.

Baza wygląda inaczej, ale dla uproszczenia przedstawiłem to w takiej postaci.
poli25
spróbuj wiec tak:
select a.id_product,a.magazyn,
(select sum(ilosc) from magazyny where product_id=a.product_id),
(select sum(ilosc) from magazyny where magazyn=a.magazyn and product_id=a.product_id)
from magazyny a where magazyn=$magazyn_nr

z pamieci pisze wiec jakby nie działalo to przeslij mi zrzut z bazy winksmiley.jpg

jakby co to pisz do mnie na gg 10652868 pozdr.


p.s. ilosc na magazynie 2 chcesz 0? dla produktu 3?
to wtredy tak :
select a.id_produkt,
(select sum(ilosc) from magazyny where id_produkt=a.id_produkt),
coalesce((select sum(ilosc) from magazyny where magazyn_nr='$mag2' and id_produkt=a.id_produkt),0)

from magazyny a
group by id_produkt order by 1
boddah85
Twoja pierwsza podpowiedź już mnie naprowadziła na rozwiązanie. Serdeczne dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.