Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zliczenie stanu produktów / złączenie tabel
zielinskit
post 27.06.2014, 09:05:50
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Witam, mam taką sytuację:



Potrzebuję zapytania, które wypluje mi produkty i zliczy stan P-R (pzychód i rozchód) z tabeli detale.
Odziedziczyłem takie ustrojstwo i nie mogę zmienić struktury tabel.
Go to the top of the page
+Quote Post
Pyton_000
post 27.06.2014, 10:51:49
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie pomożemy
Go to the top of the page
+Quote Post
zielinskit
post 27.06.2014, 11:07:23
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Mam rozumieć, że to technicznie niemożliwe przez pojedyncze zapytanie SQL ?
Obecnie jest to rozwiązane w taki sposób, że aż wstyd pokazać. Miałem nadzieję, że
da się to zrealizować bardziej profesjinalnie. Trudno.
Go to the top of the page
+Quote Post
mar1aczi
post 27.06.2014, 11:12:50
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Pokaż co masz i napisz co chciałbyś zmienić.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
Turson
post 27.06.2014, 11:14:23
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Cytat(zielinskit @ 27.06.2014, 12:07:23 ) *
Mam rozumieć, że to technicznie niemożliwe przez pojedyncze zapytanie SQL ?
Obecnie jest to rozwiązane w taki sposób, że aż wstyd pokazać. Miałem nadzieję, że
da się to zrealizować bardziej profesjinalnie. Trudno.

JOIN Detale.IdProd = Produkty.IdProd
Go to the top of the page
+Quote Post
vermis
post 27.06.2014, 11:18:08
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


Czyli wg Ciebie mniejsza ilość zapytań oznacza większy profesjonalizm?

Jeśli masz rozchód to pomnóż razy -1 i zsumuj grupując po id produktu.


--------------------
Go to the top of the page
+Quote Post
zielinskit
post 27.06.2014, 11:44:00
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Tak jest to rozwiązane obecnie, dla 200 produktów wynik wypluwa po 5 s.

  1. <?php
  2. $aQuery="select distinct Symbol,IdAso from produkty order by Symbol";
  3. $aQResult = mysql_query( $aQuery, $aDBLink );
  4. if ( $aQResult == True )
  5. {
  6. while ( $aRow = mysql_fetch_array( $aQResult ) )
  7. {
  8. $idaso=$aRow["IdAso"];
  9. $symbol=$aRow["Symbol"];
  10. $bQuery="select * from detale where IdAso=$idaso ";
  11. $bQResult=mysql_query($bQuery,$aDBLink);
  12. if ($bQResult==true)
  13. {
  14. $sum_p=0;
  15. $sum_r=0;
  16. while ($bRow=mysql_fetch_array($bQResult))
  17. {
  18. $pr=$bRow["PR"];
  19. $ilosc=$bRow["Ilosc"];
  20. if ($pr=="P")
  21. {
  22. $sum_p+=$ilosc;
  23. }
  24. else
  25. {
  26. $sum_r+=$ilosc;
  27. }
  28. }
  29. $stan=$sum_p-$sum_r;
  30. }
  31. }
  32. }
  33. ?>
Go to the top of the page
+Quote Post
Turson
post 27.06.2014, 11:47:40
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Już napisałem, żebyś złączył tabele JOINem. Nałóż indeksy na kolumny
Go to the top of the page
+Quote Post
zielinskit
post 27.06.2014, 12:26:46
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Właśnie chodzi o to, że nie potrafię tego dobrze złączyć joinem, dlatego proszę o pomoc.
Go to the top of the page
+Quote Post
Turson
post 27.06.2014, 12:40:40
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM Detale JOIN Produkty ON Produkty.IdProd=Detale.IdProd
Go to the top of the page
+Quote Post
zielinskit
post 28.06.2014, 11:17:18
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Chyba się nie rozumiemy, w jaki sposób takie złączenie ma mi pomóc ?

Takie zapytanie:
  1. SELECT p.Symbol,d.Ilosc FROM detale d JOIN produkty p ON p.IdAso=d.IdAso GROUP BY p.Symbol


się nie sprawdza, ponieważ w tabeli detale kolumna Ilosc zawiera dane o przychodach i rozchodach a rozróżnikiem
jest kolumna PR (dla przychodu P, dla rozchodu R).
Go to the top of the page
+Quote Post
Pyton_000
post 28.06.2014, 11:32:19
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  1. SELECT *, SUM(IF(PR='p', ilosc, ilosc*-1)) FROM pr GROUP BY idProd

Dalej sobie poradzisz
Go to the top of the page
+Quote Post
zielinskit
post 30.06.2014, 05:00:02
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Dziękuję bardzo za okazaną pomoc. Temat zamknięty.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 12:37