Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zliczanie rekordow
Forum PHP.pl > Forum > Bazy danych > MySQL
invx
Witam

szukam pomyslu na zapytanie SQL do MySQL'a, zeby zliczyc rekordy, ale mam dosc dziwna strukture

Kod
|id|id_|id_b|nt|
|1 |1  |4   |1 |
|2 |1  |0   |0 |
|3 |1  |0   |0 |
|4 |4  |1   |1 |
|5 |4  |0   |0 |
|6 |4  |0   |0 |
|7 |7  |3   |1 |
|8 |7  |0   |0 |
|9 |9  |3   |1 |
|10|9  |0   |0 |
|11|11 |4   |1 |
|12|12 |4   |1 |
|13|12 |0   |0 |
|14|12 |0   |0 |


i z takiej tabelki potrzebuje zliczyc ile jest rekordow ktore maja id_b = podanej zmiennej i nt=1 (np. 4) i takich, ktore maja id_ rowne wartosci id tego poprzedniego rekordu (czyli maja id_b = podanej zmiennej i nt=1 (np. 4)). Czy da sie to w jednym zapytaniem ? bo z dwoma pewnie bym cosik sam wykombinowal tongue.gif.

dzieki

P.S.
przyklad: podaje ze chce rekordy ktorych id_b=4; wiec znajduje ten rekord, odczytuje ze id_ = 1 i szukam innych ktore maja id_=1, zliczam je. smile.gif
nospor
  1. SELECT count(*)
  2. FROM tabela WHERE (id_b=4 AND nt=1) OR id_ IN (SELECT id_
  3. FROM tabela WHERE id_b=4 AND nt=1)
invx
niedziala ...

"#1064 - Something is wrong in your syntax obok 'select id_
from forum_c)' w linii 3
"
  1. SELECT count(*)
  2. FROM tabela WHERE (id_b=4 AND nt=1) OR id_ IN (SELECT id_
  3. FROM tabela WHERE id_b=4 AND nt=1)[/SLQ]
  4.  
  5. z tego co zauwazylem TO koncowka zapytania jest chyba zla [sql]OR id_ IN (SELECT id_
  6. FROM tabela WHERE id_b=4 AND nt=1)

bo kaze wyszukac takie id_ gdzie id_b=4 i nt=1.
a zauwaz ze pola z id_ ktore chce wyszukac jako id_b i nt maja 0, wiec nic ...
ale jak to wytne to errora i tak zglasza. Dane w bazie sa.
dr_bonzo
Masz mysqla w wersji min 4.1? Zeby miec obsluge podzapytan.
Wyjasnij troche jasniej o co ci chodzi, co chcesz uzyskac, jakie masz dane wejsciowe (wartosci id i nt ).
invx
niewydajnie w pare zapytaniach, udalo mi sie to zrobic tak:

  1. <?php
  2. /*Zliczanie ilości postów*/
  3. $ilosc2 = "SELECT * FROM forum_c WHERE id_b='".$forum_b['id']."' AND nowy_temat=1";
  4. $wykonaj5 = mysql_query ( $ilosc2 );
  5. while( $posty = mysql_fetch_array( $wykonaj5 ) )
  6. {
  7. $ilosc3  = "SELECT * FROM forum_c WHERE id_='".$posty['id_']."'";
  8. $wykonaj6 = mysql_query( $ilosc3 );
  9. $ilosc_id_= mysql_num_rows( $wykonaj6 );
  10. $suma_id_ = $suma_id_ + $ilosc_id_;
  11. }
  12. $suma_id_b = mysql_num_rows( $wykonaj5 );
  13. $iloscposty = $suma_id_;
  14. //zerowanie sumy, przy przejściu do kolejnego id_b
  15. $suma_id_  = 0;
  16. /**/
  17.  
  18. ?>


i jak by ktos mial pomysl jak to usprawnic
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-2024 Invision Power Services, Inc.