Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dwie pętle
Mateostin
post 27.11.2016, 21:08:50
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

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


Witam, temat był już poruszany natomiast nie potrafię dopasować tego pod siebie mam taki kod:

  1. <?php
  2.  
  3. echo "";
  4. echo "<table class='zaznaczenie'>";
  5. echo "<tr style='background-color: #FFEBCD; padding: 2;'> <th WIDTH=6%>Materiał</th> <th WIDTH=6% title='Numer Zlecenia'>Ilosc</th> <th>jednostka</th> <th>Ilosc PROD</th> </tr>";
  6.  
  7. $connect = mysqli_connect(tutaj się łącze :) );
  8. $zapytanie = "SELECT SUM(iloscrec*ilosc/100) AS iloscsur, surowiec, Produkt FROM receptura JOIN produkcjadb ON(produkcjadb.Produkt = receptura.kolor) WHERE data_zakonczenia >= CURRENT_DATE GROUP BY surowiec"
  9. $resultprod = mysqli_query($connect, $zapytanie);
  10. while($dana = mysqli_fetch_assoc($resultprod))
  11. {
  12.  
  13. $zmiennailoscsur = sprintf('%.3f', $dana['iloscsur']);
  14. echo ''.$dana['surowiec'].' ---- '.$zmiennailoscsur.' </br>';
  15. }
  16.  
  17. ?>
  18. <?php
  19.  
  20. $connect = mysqli_connect(tutaj się łącze :) );
  21. $zapytanie = "SELECT SUM(ilosccal) AS ilosc, material, jednostka FROM surowce WHERE magazyn='G' || magazyn='K' || magazyn='S' || magazyn='P' || magazyn='PROUT' || magazyn='W' || magazyn='OR' GROUP BY material"
  22. $result = mysqli_query($connect, $zapytanie);
  23. while($dana = mysqli_fetch_assoc($result))
  24. {
  25. $zmienna = sprintf('%.3f', $dana['ilosc']);
  26. echo "";
  27. echo "<tr style='background-color: #FFFFF0'>";
  28. echo '<td>' . $dana['material'] . '</td>';
  29. echo '<td>'.$zmienna.'</td>';
  30. echo '<td>'.$dana['jednostka'].'</td>';
  31. echo "</tr>";
  32. }
  33.  
  34. ?>



i teraz pytanie czy moge jakos zrobic tak zeby wyniki z pierwszej petli przyporządkowało mi do drugiej pętli gdzie $dana['material'] z drugiej petli = $dana['surowiec'] z pierwszej pętli?

Dobra poradziłem sobie zwykłym ifem, natomiast to chyba zabije serwer, da się zrobić jakoś żeby tylko wpisywało wartość dla tych które występują 1 petli a te które nie żeby dawało w tabeli 0 bądź - ?

Ma ktos chociaż jakąs wskazowke?
Go to the top of the page
+Quote Post
nospor
post 27.11.2016, 21:47:45
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dodaj do glownego zapytania LEFT JOIN surowce i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mateostin
post 27.11.2016, 21:57:20
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

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


ale główne zapytanie pochodzi z tabeli surowce problem w tym ze nie potrafie pogodzić tego zapytania z receptur i produkcjadb
Go to the top of the page
+Quote Post
nospor
post 27.11.2016, 21:59:52
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Chciales wskazowke, dostales wskazowke. Ja tam tez nie jestem w stanie nic wiecej wymyslec nie majac struktur tabel ani opisu co sie z czym i jak laczy. Magic does not exist wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mateostin
post 27.11.2016, 22:14:35
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

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


Dobra spróbuje to jakoś naświetlić:

mam produkcjadb

produkt | ilosc
aaa | 2
bbb | 3
ccc | 3

mam tabele receptura

surowiec | iloscrec | kolor
nazwasur | 1.44 | aaa
nazwasur1 | 3.64 | aaa
nazwasur2 | 5.34 | bbb


oraz tabele surowce
surowiec | ilosc | magazyn
nazwasur | 5 | g
nazwasur1 | 6 | g
nazwasur2 | 1 | g
nazwasur | 2 | s
nazwasur4 | 3 | s
nazwasur | 4 | k


i teraz potrzebuje wyswietlić w jednej tabeli
wszystkie materiały z tabeli surowcowej zliczone wedlug magazynu- to zrobilem
dodatkowo wyswietlić obok ilość surowca ktora wchodzi w skład materiałów do produkcji wykonując działanie jak w moim drugim zapytaniu MYSQL natomiast nie potrafie tego wsadzić w jedna tabele... bo oddzielnie to nie ma problemu tak jak w pierwszym poscie... bo robie dwie oddzielne petle i mam wszystko
jezeli moj tok myslenia jest bledny i na to powinno sie użyć innych opcji to prosiłbym aby ktoś mnie nakierował

bo zalezy mi na tym aby wynik z pierwszej petli porownać do drugiej petli gdzie materiał=surowiec gdzie material!=surowiec wyswietl 0 i za chiny nie umiem... tworzy mi sie potezna petla ktorej zaladowanie trwa trzy dni...

Ten post edytował Mateostin 27.11.2016, 22:19:44
Go to the top of the page
+Quote Post
nospor
post 27.11.2016, 22:31:02
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to tak jak mowilem: do glownego zapytania dodajesz LEFT JOIN do trzeciej tabeli. I masz wowczas tylko jedno to zapytanie. zadnych wiecej zapytan.

Wyswietl sobie co to zapytanie bedzie zwracac - moze lepiej zrozumiesz.
Potem to juz tylko grupujesz w php i wyswietlasz sobie jak chcesz.

Jak grupowac tego typu rzeczy opisywalem tu:
http://nospor.pl/grupowanie-wynikow.html
Idea ta sama


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mateostin
post 28.11.2016, 17:33:35
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

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


Dziękuje bardzo nospor bede walczył i moze cos się uda!

Witam ponownie a gdybym zrobił takim wzorcem?

  1. SELECT wartość
  2. FROM (SELECT SUM(iloscrec*ilosc/100) AS iloscsur, surowiec, Produkt
  3. FROM receptura
  4. JOIN produkcjadb ON(produkcjadb.Produkt = receptura.kolor)
  5. WHERE data_zakonczenia >= CURRENT_DATE
  6. GROUP BY surowiec
  7. ) surowce JOIN (
  8. SELECT SUM(ilosccal) AS ilosc, material, jednostka
  9. FROM surowce
  10. WHERE magazyn='G' || magazyn='K' || magazyn='S' || magazyn='P' || magazyn='PROUT' || magazyn='W' || magazyn='OR'
  11. GROUP BY material
  12. ) receptura
  13. ON surowiec.material = receptura.surowiec

czy takie cos ma sens?
i jeszcze jedno pytanie bo dostałem wskazowke w funkcją LEFT JOIN a nie lepsza jest funkcja LEFT OUTER JOIN?
przy okazji nie wiem dobrze zbudowałem te subquery... jezeli cos źle czy mogłby mnie ktos poprawic?

Jednak jeszcze jedno pytanie....na jakiej zasadzie działają widoki w PHPMYADMIN?

Ten post edytował Mateostin 28.11.2016, 16:01:40
Go to the top of the page
+Quote Post
nospor
post 29.11.2016, 10:22:00
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




O co ci chodzi z widokami w phpmyadmin? Widoki to jest mysql sprawa a nie PMA. Rownie dobrze mozesz zapytac jak dzialaja tabele w PMA wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 29.11.2016, 10:38:35
Post #9





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Widoki to po krótce zapisane zapytania. W Mysql mocno ograniczone (jak wszystko w tym badziewnym systemie, nie ma np natywnej obsługi zmaterializowanych widoków). LEFT JOIN to właśnie LEFT OUTER JOIN więc nie wiem kto takie bzdury nagadał. Tak samo jak nie musisz pisać INNER JOIN tylko samo JOIN.


--------------------
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: 14.08.2025 - 03:37