Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pytanie, LIMIT w mysql, policzenie, LIMIT w mysql, policzenie
jacekrzeszow
post 16.09.2012, 10:40:32
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.09.2012

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


Witam, mam takie pytanie. Mam sobie tabele, w ktorej np jest 500 rekordow, ja chce pobrac pierwszych 10 rekordow pomiedzy dwiema okreslonymi godzinami/datami
i to nie stanowi problemu. Jednak mam w tej tabeli kolumne "status", i tutaj status=0 lub status=1. Chce pobrac pierwszych 10 rekordow ze wszystkimi statusami, ale zeby policzylo mi tylko ile jest statusow z wartoscia 1. Jesli dam where status=1 order by id asc limit.. to nie dziala jak powinno, bo bierze pod uwage pierwszych 10 rekordow ze statusem 1, a 0 w ogole nie sprawdza. I tutaj pytanie jak to zrobic - czy mozna to jakos w zapytaniu zrobic? case if? i potem uzyc mysql_num_rows? probowalem roznych sposobow lacznie ze zmienna o wartosci zero i jesli status =0 to wtedy $zmienna++; ale zle to bylo liczone. Jednym slowem chce posortowac to rosnaco po id, pomiedzy 2 datami i musi to byc pierwzych 10 rekodorw bez wzgledu na status i chce uzyskac liczbe przypadkow ze status=1 w tych pierwszych 10 rekordach, wydaje sie banalne, ale jakos jeszcze na to nie wpadlem.


Z gory dzieki za porady.

Ten post edytował Spawnm 17.09.2012, 20:30:00
Go to the top of the page
+Quote Post
!*!
post 16.09.2012, 10:43:40
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Pokaż jak próbowałeś. W zapytaniu jest coś takiego jak COUNT, WHERE itd.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
jacekrzeszow
post 16.09.2012, 14:47:38
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.09.2012

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


  1. $zapytanie2 = "SELECT * FROM community_matches inner join community_bets on community_matches.datetime between '{$pole1['date_start']}' and '{$pole1['date_finish']}' and community_matches.active=0 and community_bets.matchid=community_matches.id and community_bets.users_id={$pole1['home_id']} order by community_bets.id desc limit 10";

  1. $dzialaj2=mysql_query($zapytanie2);
  2. $p=mysql_fetch_array($dzialaj2);
  3.  
  4. $i=0;
  5. if($p['status'] == 1)
  6. {
  7. $i++;
  8. }


To robilem ostatnio, probowalem tez wczesniej z count, jednak nie mam tego juz zapisanego. Cale powyzsze zapytanie wykonuje sie w petli dla wielu przypadkow.

Zrobiłem coś takiego:

  1. $zapytanie20 = "SELECT * FROM community_bets inner join community_matches on community_matches.datetime between '{$pole1['date_start']}' and '{$pole1['date_finish']}' and community_matches.active=0 and community_bets.matchid=community_matches.id and community_bets.users_id='{$pole1['home_id']}' order by community_bets.id asc limit 10";
  2. $dzialaj20=mysql_query($zapytanie20);
  3. while($pole2220 = mysql_fetch_array($dzialaj20))
  4. {
  5. $zapytanie2 = "SELECT * FROM community_bets where id='{$pole2220['id']}'and won='y'";
  6. $dzialaj2=mysql_query($zapytanie2);
  7. $pole22 = mysql_num_rows($dzialaj2);
  8. }


Najpierw pobieram wszystkie rekordy bez wzgledu na status, i potem po id tych rekordow pobieram z warunkiem won='y' i sprawdzam ile jest takich rekordow, jednak pokazuje sie maksymalnie 1 rekord ( $pole22) w kazdym przypadku, a powinno o pare wiecej...

Ten post edytował jacekrzeszow 16.09.2012, 14:48:23
Go to the top of the page
+Quote Post
Yorki
post 17.09.2012, 20:18:27
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 12.09.2005

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


Może to Ci się przyda i nakieruje:

  1. SELECT Tabl.Name, Tabl.Address, Results.Totals
  2. FROM Databas.Tabl
  3. LEFT JOIN (SELECT COUNT(*) AS Totals, 0 AS Bonus
  4. FROM Databas.Tabl
  5. WHERE TimeLogged='Noon'
  6. GROUP BY NULL) Results
  7. ON 0 = Results.Bonus
  8. WHERE STATUS='URGENT';
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: 5.05.2024 - 11:40