Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Złożone zapytanie SELECT WHERE
Forum PHP.pl > Forum > Bazy danych > MySQL
Lonas
W tej chwili zapytanie wyglada tak :

  1. ...
  2.  
  3. $res = mysql_query("select * from wz, wz_towar where id=nr_wz and data>= '".$datapocz."' and data <= '".$datakon."' and gdzie = '".$gdzie."' order by data desc" );
  4.  
  5. ...




w wyniku pokażą mi się wszystkie wydane produkty na daną hale w wybranym okresie.

przykład : śruba 14mm

wydana 1, 3, 5, 15, 31 w każdym dniu w innej ilosci - takich produkktów jest np 30

chciałbym teraz uzyskać takie zliczenie - ile tych śrub było wydanych w okresie od do


Mam tabele WZ i WZ_towar

w tabeli WZ - id
w tabeli WZ_towar każdy produkt ma id_wz




EDIT :
Jeszcze jedna dosc istotna informacja : w tabeli WZ są przechowywane daty i na jaka hale zostal towar wydany

w tabeli WZ_towar tylko id_wz, nazwa, ilosc
nospor
kombinuj z group by oraz sum

edit:
skoro chodzi o zapytanie to dawaj nam zapytanie a nie php, co mamy to parsowac jeszcze smile.gif
nie mam teraz dostepu do bazki, ale to mniej wiecej tak powinno byc:
  1. SELECT nazwa, sum(ilosc) AS suma FROM wz, wz_towar WHERE id=nr_wz AND warunkinadateigdze GROUP BY id
Lonas
Zapytanie wyglada tak :

  1. SELECT *, sum(ilosc) AS suma FROM wz, wz_towar WHERE id=nr_wz AND data>= '".$datapocz."' AND DATA <= '".$datakon."' AND gdzie = '".$gdzie."' GROUP BY id"


wynik wystwietlam tak :

  1. <?php
  2. for ($i=0; $i <$num_results; $i++) {
  3. $row2 = mysql_fetch_array($res2);
  4.  echo '  <tr>
  5. <td width="15%">
  6. <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">'.$row2['data'].'</font></div>
  7. </td>
  8. <td width="15%">
  9. <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="pokaz_dane_wz.php?id_wz='.$row2["id"].'" " >'.$row2["id"].'</a></font></div>
  10. </td> 
  11. <td width="15%">
  12. <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">'.$row2['nazwa'].'</font></div>
  13. </td>
  14. <td width="15%">
  15. <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">'.$row2['suma'].'</font></div>
  16. </td>
  17. </td>
  18.  
  19.  
  20.  
  21. </tr>  ';
  22. }
  23. ?>


ale rezultat jest tem sam, nie sumuje produktów tylko wywala wszystkie :/
nospor
sprobuj:
  1. ....GROUP BY nr_wz

Powiniene ci kazdy produkt wywalic tylko raz. No chyba ze ty zle zlaczenie robisz
bendi
Cytat(nospor @ 24.07.2006, 08:54 ) *
sprobuj:
  1. ....GROUP BY nr_wz

Powiniene ci kazdy produkt wywalic tylko raz. No chyba ze ty zle zlaczenie robisz


Dla MySQL>=4.1 można użyć with ROLLUP
Lonas
Group by nazwa - tak działa smile.gif
dzięki za pomoc
nospor
blink.gif sądzilem ze produkty o tej samej nazwie mają takie samo id. tak nie jest?
Lonas
Nie do końca - bo wz_towar każdy produkt przypisany do jakiejś wz przyjmuje jej wartośc ID - na tej zasadzie potem wybieram produkty przypisane do danej wz smile.gif

A produkt o tej samej nazwie może figurować na róznych WZ_towar smile.gif i będzie wtedy przyjmował inne ID
nospor
No i dlatego wlasnie moje wczesniejsze zapytanie nie dzialalo smile.gif
Swoją droga to produkty identyfikowac powinienes po ID a nie po nazwie. Po to wlasnie wymyslono ID, ktore powinno byc nie zmienne niezależnie czy nazwa sie zmienia czy nie. No ale moze u Ciebie tak byc powinno.

pozdro
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.