Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak wyliczyć wyniki z zapytania
dopal
post
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Witam,

Mam dwie tabele w bazie ( nie wypisuje wszystkich pól, tylko te co są istotne przy moim problemie):
tab.a1
ID | nazwa | numer|
1 | cytryna| 1001|
2 |kiwi | 1002|
3 |banan | 1003|
4 |jabłko | 1004|
itd.

tab.b1
ID |nr2 | czas | atrybut|
1 | 1001| 20130105 | h|
2 | 1001 | 20130108 | r |
3 | 1001| 20130110 | h|
4 |1002 | 20130106 | h|
5 | 1002| 20130109 | h|
6 |1003 | 20130114 | r|
7 |1003 |20130115 | r|
8 |1004 |20130110 | a|

Pierwsza część działa mi prawidłowo, otrzymuję wszystkie wyniki spełniające zapytanie

  1. <?php
  2.  
  3. $query="SELECT * FROM a1 inner join b1 where numer=nr2 and czas2 between '20130101' AND '20130115' group by nazwa, atrybut";
  4.  
  5. $result=mysql_query($query) or die( odbc_error());
  6. $ilosc = mysql_num_rows($result);
  7.  
  8. $i = 0;
  9. while( $set = mysql_fetch_assoc( $result)){
  10. $i++;
  11.  
  12. $wynik = $i%2;
  13. if($wynik == "0"){
  14. $kolor = "white";}
  15. else {
  16. $kolor = "lightgreen";
  17. }
  18. echo '<tr bgcolor='.$kolor.'><td width="5%">'.$i.'.</td>
  19. <td width="25%">'.$set['nazwa'].'</td>
  20. <td width="12%">'.$set['nr2'].'</td>
  21. <td width="12%">'.$set['atrybut'].'</td>
  22. </tr>';
  23.  
  24. }?>

w wyniku otrzymuję taką tabelkę:

1.cytryna 1001 h
2.cytryna 1001 r

3.kiwi 1002 h
4.banan 1003 r
5.jabłko 1004 a

Teraz chciałbym by nastapiło zliczenie wg takiego rozwiązania po atrybutach.
Jeśli dana produkt ( np. cytryna ) wystepuje w dwóch wynikach z różnymi atrybutami ( h, r ) to chcę by to było zliczone jako h
i by w tabeli poniżej nastepowało sumowanie po atrybutach
(analogicznie sobie już pozostałe ustawienia dopasuję )

czyli w tym przypadku:
atrybut h - 2 ( czyli cytryna i kiwi )
atrybut r - 1 ( czyli banan)
atrybut a - 1 (czyli jabłko )

  1.  
  2. //nie wiem w jaki sposób osiągnąć to co wyżej opisałem.
  3.  
  4. echo ' <tr bgcolor='.$kolor.'><td width="5%">1.</td>
  5. <td width="25%">'.$ilosc.'</td>
  6. <td width="25%">atrybut H '.$questionmark.gifquestionmark.gifquestionmark.gif.'</td>
  7. <td width="25%">atrybut R '.$questionmark.gifquestionmark.gifquestionmark.gif.'</td>
  8. <td width="25%">atrybut A '.$questionmark.gifquestionmark.gifquestionmark.gif.'</td>
  9. ';
  10. ?>

W jaki sposób można to zrobić, proszę o jakieś podpowiedzi i wskazówki.
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





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




Tworzysz tyle tablic ile masz atrybutów.
Lecisz w petli po elementach z bazy.
Jeśli atrybut to nie h, to patrzysz czy w tablicy z h już jest ten element (in_array()). Jak nie ma to dodajesz do danego atrybutu. Jak jest to nic z tym nie robisz.
Jeśli atrybut to h, to dodajesz do tablicy z h i patrzysz, czy w innych tablicach jest. Jak jest w innych to usuwasz z tych innych

I juz.


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

"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
dopal
post
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


kombinuje jak to zroić, ale mi niestety nie wychodzi, ani z tablicami ani później z warunkami.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Podałeś, co masz na wejściu. Pokaż wyjście, a pokażę ci jak je uzyskać. W SQL-u. Żadnego kodu PHP.
Go to the top of the page
+Quote Post
dopal
post
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Po przerobieniu kod wygląda jak poniżej, mam jednak parę pytań.
Z tabeli dawcy interesują mnie tylko pola: DADWNR, DADWNZ, DADWIM, DADWPS, DADWA1, DADWA2, DAPLNR
z tabeli oddania tylko: ODDNR1, ODDWNR, ODDNNR, ODDNDT
obie z tych tabel zawierają więcej pól

  1. <?
  2. $query="SELECT DADWNR, DADWNZ, DADWIM, DADWPS, DADWA1, DADWA2, DAPLNR, ODDNR1, ODDWNR, ODDNNR, ODDNDT FROM DAWCY
  3. INNER JOIN ODDANIA on DADWNR=ODDWNR AND DAPLNR=ODPLNR
  4. WHERE
  5. ODDNDT Between '20121231' And '20121231' AND ODDNKD='E5' OR
  6. ODDNDT Between '20121231' And '20121231' AND ODDNKD='EA' OR
  7. ODDNDT Between '20121231' And '20121231' AND ODDNKD='EK' OR
  8. ODDNDT Between '20121231' And '20121231' AND ODDNKD='EP' ";
  9.  
  10. //SPRAWA 1
  11. //chciałem by w zapytaniu było grupowanie, na końcu dodałem GRUOP BY ODDWNR, ODDNR1 otrzymuję komunuikat
  12. //Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][Sterownik ODBC iSeries Access][DB2 UDB]SQL0122 -
  13. // Niepoprawna kolumna DADWNR lub wyra�enie na li�cie SELECT., SQL state S1000 in SQLExecDirect in D:\www\apache\htdocs\zest_magpoj.php
  14. //on line 164 S1000
  15. //jak powinno wyglądać poprawnie zapytanie w tym przypadku?
  16.  
  17. $result = odbc_exec($connect, $query) or die( odbc_error());
  18.  
  19. $ilosc = odbc_num_rows($result);
  20. ?>
  21. <table border="1">
  22. <tr bgcolor="#24FF19"><td width="3%" align="center"><b>Lp.</b></td>
  23. <td align="center"><b>Nr plac.</b></td>
  24. <td align="center"><b>Nazwa skł.</b></td>
  25. <td align="center"><b>Placówka don.</b></td>
  26. <td align="center"><b>Nr don.</b></td>
  27. <td align="center"><b>Pojemnik</b></td>
  28. <td align="center"><b>Zwrot</b></td>
  29. <td align="center"><b>flaga</b></td>
  30. <td align="center"><b>dostawca</b></td>
  31. <td align="center"><b>Odbiorca</b></td>
  32. <td align="center"><b>Poj. zwrocony</b></td>
  33. <td align="center"><b>Data don</b></td>
  34. </tr>
  35.  
  36. <?php
  37. $x=0;
  38. while(odbc_fetch_row($result)) {
  39.  
  40. $x++;
  41.  
  42. $a1 = odbc_result($result, 1);
  43. $a2 = odbc_result($result, 2);
  44. $a3 = odbc_result($result, 3);
  45. $a4 = odbc_result($result, 4);
  46. $a5 = odbc_result($result, 5);
  47. $a6 = odbc_result($result, 6);
  48. $a7 = odbc_result($result, 7);
  49. $a8 = odbc_result($result, 8);
  50. $a9 = odbc_result($result, 9);
  51. $a10 = odbc_result($result, 10);
  52. $a11 = odbc_result($result, 11);
  53.  
  54.  
  55. {
  56. echo '<tr ><td align="center">'.$x.'</td>
  57. <td align="center">'.$a1.'</td>
  58. <td align="center">'.$a2.'</td>
  59. <td align="center">'.$a3.'</td>
  60. <td align="center">'.$a7.'</td>
  61. <td align="center">'.$a4.'</td>
  62. <td align="center">'.$a5.'</td>
  63. <td align="center">'.$a6.'</td>
  64. <td align="center">'.$a8.'</td>
  65. <td align="center">'.$a9.'</td>
  66. <td align="center">'.$a10.'</td>
  67. <td align="center">'.$a11.'</td>
  68.  
  69. </tr>';
  70. }}
  71. ?>


Przy takim założeniu otrzymuję wynik 98 co odpowiada faktycznemu stanowi ( docelowo jednak musi być też grupowanie)


Sprawa druga czyli sumowanie po atrybutach czyli po polu ODDNR1
  1. //$a11 = odbc_result($result, 11);
  2. //po tej lini dodaje ten kod co poniżej
  3. //przy takim zapisie wyswietla mi w tabeli połowe wyników czyli 49, tak jak by brał co drugi
  4.  
  5. $dane[]=odbc_fetch_row($result);
  6.  
  7. $tab_h=array();
  8. $tab_r=array();
  9. $tab_p=array();
  10. $tab_a=array();
  11.  
  12. foreach ($dane as $item) {
  13.  
  14. if($item['oddnr1']=='H')
  15. $tab_h[]=$item['oddwnr'];
  16. }
  17.  
  18. foreach ($dane as $item) {
  19. if($item['oddnr1']=='R' && !in_array($item['oddwnr'],$tab_h))
  20. $tab_r[]=$item['oddwnr'];
  21. }
  22. foreach ($dane as $item) {
  23. if($item['oddnr1']=='P' && !in_array($item['oddwnr'],$tab_h)&& !in_array($item['oddwnr'],$tab_r))
  24. $tab_p[]=$item['oddwnr'];
  25. }
  26. foreach ($dane as $item) {
  27. if($item['oddnr1']=='A' && !in_array($item['oddwnr'],$tab_h)&& !in_array($item['oddwnr'],$tab_r)&& !in_array($item['oddwnr'],$tab_p))
  28. $tab_a[]=$item['oddwnr'];
  29. }
  30. // powyższy zapis nie daje mi oczekiwanego wyniku zliczania, co świadczy że składnia jest zła, jak to powinno wyglądać prawidłowo
  31.  
  32. {
  33. echo '<tr ><td align="center">'.$x.'</td>
  34. <td align="center">'.$a1.'</td>
  35. <td align="center">'.$a2.'</td>
  36. <td align="center">'.$a3.'</td>
  37. <td align="center">'.$a7.'</td>
  38. <td align="center">'.$a4.'</td>
  39. <td align="center">'.$a5.'</td>
  40. <td align="center">'.$a6.'</td>
  41.  
  42. <td align="center">'.$a8.'</td>
  43. <td align="center">'.$a9.'</td>
  44. <td align="center">'.$a10.'</td>
  45. <td align="center">'.$a11.'</td>
  46.  
  47. </tr>';
  48. }}
  49. //oczywiście poniżej nie wyświetlaja mi się wyniki wg założeń, tylko 0
  50. print_r($dane);
  51. echo 'Atrybut h: '.count($tab_h).'<br />';
  52. echo 'Atrybut r: '.count($tab_r).'<br />';
  53. echo 'Atrybut p: '.count($tab_p).'<br />';
  54. echo 'Atrybut a: '.count($tab_a).'<br />';
  55.  
  56. ?>


Ten post edytował dopal 12.02.2013, 08:26:36
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




@dopal algorytm co ci podałem miałes robić w jednej pętli a nie w piętnastu pętlach. A tą jedną pętlą miała być pętla, którą już miałeś:
while( $set = mysql_fetch_assoc( $result)){
///tu miałęś robić algorytm co ci podałem
}


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

"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
dopal
post
Post #7





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Cytat(nospor @ 12.02.2013, 09:09:19 ) *
@dopal algorytm co ci podałem miałes robić w jednej pętli a nie w piętnastu pętlach. A tą jedną pętlą miała być pętla, którą już miałeś:
while( $set = mysql_fetch_assoc( $result)){
///tu miałęś robić algorytm co ci podałem
}

ale to jest teraz odbc a nie mysql, dlatego tu sie gubie, przy mysql w miarę to mi wyszło
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




To nie ma żadnej różnicy. Petla do pobierania danych z bazy, w obu wypadkach, jest tylko jedna.


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

"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
dopal
post
Post #9





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


  1. ?php
  2. $x=0;
  3. while($set=odbc_fetch_row($result)){
  4. $dane[]=$set;
  5.  
  6.  
  7. $tab_h=array();
  8. $tab_r=array();
  9. $tab_p=array();
  10. $tab_a=array();
  11.  
  12. foreach ($dane as $item) {
  13. if($item['ODDNR1']=='H')
  14. $tab_h[]=$item['ODDWNR'];
  15. }
  16.  
  17. foreach ($dane as $item) {
  18. if($item['ODDNR1']=='R' && !in_array($item['ODDWNR'],$tab_h))
  19. $tab_r[]=$item['ODDWNR'];
  20. }
  21. foreach ($dane as $item) {
  22. if($item['ODDNR1']=='P' && !in_array($item['ODDWNR'],$tab_h)&&
  23. !in_array($item['ODDWNR'],$tab_r))
  24. $tab_p[]=$item['ODDWNR'];
  25. }
  26. foreach ($dane as $item) {
  27. if($item['ODDNR1']=='A' && !in_array($item['ODDWNR'],$tab_h)&&
  28. !in_array($item['ODDWNR'],$tab_r)&& !in_array($item['ODDWNR'],$tab_p))
  29. $tab_a[]=$item['ODDWNR'];
  30. }
  31.  
  32. }
  33. print_r($dane);
  34. echo 'Atrybut h: '.count($tab_h).'<br />';
  35. echo 'Atrybut r: '.count($tab_r).'<br />';
  36. echo 'Atrybut p: '.count($tab_p).'<br />';
  37. echo 'Atrybut a: '.count($tab_a).'<br />';
  38.  
  39. ?>

coś takiego?
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Po co te FOEREACH w głównej petli? Po co to:
$dane[]=$set;
rekord z bazy masz w $set. Po co go jeszcze zapisujesz do tablicy, a potem latasz po tej tablicy?
Inicjalizacja tablic atrybutów miałeś robić przed pętlą a nie w petli.


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

"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
dopal
post
Post #11





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Nie wiem jak to ma byc, możesz to konkretnie podać, bo już mnie nerwica bierze na to jak ma to wyglądać.
Dziś muszę mieć te dane wyciągnięte do sprawozdania w pracy, a ciągle jestem w d...

  1. <?php
  2. $x=0;
  3.  
  4. $tab_h=array();
  5. $tab_r=array();
  6. $tab_p=array();
  7. $tab_a=array();
  8.  
  9.  
  10.  
  11. while($set=odbc_fetch_array($result)){
  12.  
  13.  
  14.  
  15.  
  16. if($set['ODDNR1']=='H'){
  17. $tab_h[]=$set['ODDWNR'];
  18. }
  19.  
  20. if($set['ODDNR1']=='R' && !in_array($set['ODDWNR'],$tab_h)){
  21. $tab_r[]=$set['ODDWNR'];
  22. }
  23.  
  24. if($set['ODDNR1']=='P' && !in_array($set['ODDWNR'],$tab_h)&&
  25. !in_array($set['ODDWNR'],$tab_r)){
  26. $tab_p[]=$set['ODDWNR'];
  27. }
  28.  
  29. if($set['ODDNR1']=='A' && !in_array($set['ODDWNR'],$tab_h)&&
  30. !in_array($set['ODDWNR'],$tab_r)&& !in_array($set['ODDWNR'],$tab_p)) {
  31. $tab_a[]=$set['ODDWNR'];
  32. }
  33.  
  34. }
  35. print_r($set);
  36. echo 'Atrybut h: '.count($tab_h).'<br />';
  37. echo 'Atrybut r: '.count($tab_r).'<br />';
  38. echo 'Atrybut p: '.count($tab_p).'<br />';
  39. echo 'Atrybut a: '.count($tab_a).'<br />';

coś takiego?
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Z Twojego opisu (z tego w temacie i z tego na PW) wywnioskowałem, że element może być kilkukrotnie, ale wówczas jest napewno w h oraz raz w czymś innym niż h. Z ifów co tu podales wynika, że element może być wiele razy w różnych atrybutach i przy okazji może go nie być w h. Tak?


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

"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
dopal
post
Post #13





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Tak.
Element może być np. 3 razy w h, p, r - wtedy ma byc zliczony jako raz w h, w pozostałych już nie.
Może być przypadek ze coś będzie tylko w r, to ma byc liczone w r
tak jak w ifach ustawione jest:
najpierw h, póżniej r, p, a

Wyniki z takiego zapisu juz otrzymuję, jest jednak małe przekłamanie, gdyż w zapytaniu powinno być jeszcze GRUOP BY ODDWNR, ODDNR1

ale wtedy otrzymuję komunuikat
Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][Sterownik ODBC iSeries Access][DB2 UDB]SQL0122 -
Niepoprawna kolumna DADWNR lub wyra�enie na li�cie SELECT., SQL state S1000 in SQLExecDirect in D:\www\apache\htdocs\zest_magpoj.php
on line 164 S1000
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




Dobra, zmiana algorytmu. Może trochę dłuższy, ale prostrzy.

Petla główna jak do tej pory.
Przed pętlą inicjalizujesz tablicę $element = array()
W petli:
jesli atrybut = h, $element[$nazwa_elementu] = h
jesli atrybut = r and (nieisntieje $element[$nazwa_elementu] or $element[$nazwa_elementu]!=h), $element[$nazwa_elementu] = r
jesli atrybut = p and (nieisntieje $element[$nazwa_elementu] or $element[$nazwa_elementu]!=h and $element[$nazwa_elementu]!=r), $element[$nazwa_elementu] = p
jesli atrybut = a and (nieisntieje $element[$nazwa_elementu] or $element[$nazwa_elementu]!=h and $element[$nazwa_elementu]!=r and $element[$nazwa_elementu]!=p), $element[$nazwa_elementu] = a

Dzieki temu bedziesz mial tablice elementow, z wpisem, który gdzie nalezy.

Teraz inicjalizujesz 4 tablice h r p a po czym lecisz po tablicy elementów $element
foreach ($element as $el => $atr){
//a tutaj w zaleznosci czy $atr jest rowny h r p czy a to dodajesz $el do tablicy h r p lub a
}



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

"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
dopal
post
Post #15





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


  1. $element = array()
  2.  
  3.  
  4. while($set=odbc_fetch_array($result)){
  5.  
  6.  
  7. if($set['ODDNR1']=='H'){
  8. $element['ODDNR1'] = H;
  9. }
  10.  
  11.  
  12. if($set['ODDNR1']=='R' && !in_array($element['ODDNR1'] or $element['ODDNR1']!='H'){
  13. $element['ODDNR1'] = R;
  14. }

Tak by to było na początku?
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




NIe....

Nie: $element['ODDNR1'] = H;
a: $element[nazwaelememntu czyli jablko, kiwi...nazwa ktora masz w pobranym rekordzie. tak jak atrybut masz h r p lub a tak i nazwy sie przeciez zmieniaja...] = H;


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

"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
mmmmmmm
post
Post #17





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Wstaw odpowiednie nawiasy do SQL (WHERE), bo teraz to kicha przeokrutna tam jest.
Go to the top of the page
+Quote Post
dopal
post
Post #18





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


No to będzie problem bo tych nazw będzie dużo.
W tym kodzie co dziś dałem, to już nie jest prosta tabela.

W tabeli dawcy - są dane osobowe osób kilkadziesiąt tysięcy
w tabelii oddania są informacje o oddaniach krwi jakie osoba dokonała w danym roku.
Przy każdym oddaniu może być ten atrybut:h, r, p, a

zliczenie ma polegać na wybraniu wszystkich osób z danego przedziału czasowego, którzy oddawali krew.
Wiadomo, że można oddać kilka razy w roku, dlatego w zabytaniu chciałem pogrupować najpierw po ODDWNR czyli jest to numer, można powiedzieć ze id takiej osoby, a nastepnie pogrupować po ODDNR1 czyli po atrybucie h, r, p, a.

Z takiego zapytania powinienem otrzymać np.
Jan Kowalski R
Jan kowalski H
Jan Nowak R
Piotr Malinowski A

Z tej tabeli wiem, że kowalski oddawał krew z atrybutem H i R ( przynajmniej po jednym razie ), nowak oddawał tylko z atrybutem R, a malinowski z atrybutem A

Założenia atrybutów są takie jak w kodzie, czyli jak ktoś oddawał np. H, R, P to ma być zliczony jako raz do H, jak ktoś tylko R, to raz do R

z tych załozeń mamy:
Kowalski - R i H - czyli zliczamy do H
Nowak - R - zliczamy do R
Malinowski A-zliczamy do A

otrzymany wynik z tego przykładu powinien być taki:

liczba osób z atrybutem H - 1
liczba osób z atryb. R - 1
liczba osób z atryb A- 1

Może teraz to jest jasniej, nie chciałem dokładnie tego opisywać, bo chciałem sam to zrobić, dlatego posługiwałem sie owocami jako przykładem


Cytat(mmmmmmm @ 12.02.2013, 11:06:42 ) *
Wstaw odpowiednie nawiasy do SQL (WHERE), bo teraz to kicha przeokrutna tam jest.

Właśnie nie wiem jak powinny one być wstawione.
Go to the top of the page
+Quote Post
nospor
post
Post #19





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




Cytat
No to będzie problem bo tych nazw będzie dużo.
A co za różnica czy tych nazw bedzie 2, 5 czy 5 mln?? No żadna. Przecież ciebie nazwy jako takie nie obchodzą. One są w rekordzie. Co w nim jest to jest. Ciebie to nic nie interesuje....
$nazwaelementu = $row['nazwa'];
i juz. a co sie tam kryje to ciebie nic to nie obchodzi. Ty sie poslugujesz zmienna $nazwaelementu a nie jej konkretną wartoscia....

ps: bardzo mnie to ciekawi: pisales ze masz to zrobic do pracy. Mogę zapytać gdzie pracujesz i jako kto?


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

"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
dopal
post
Post #20





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Pracuje jako osoba ds. organizacyjnych w służbie zdrowia ( głównie sprawozadanie, zestawienia itp ) i żeby nie zliczać wszystkiego na piechotę to robię sobie różne pomoce, które mi to ułatwią. a w programie który uzywamy nie ma wielu takich zestawień.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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 Aktualny czas: 21.08.2025 - 21:43