Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php][mysql] Dwa zapytania w jednym?
Forum PHP.pl > Forum > Bazy danych > MySQL
qoqo
Witam. Pobieram z bazy danych kategorie oraz chcę wyświetlić ilość filmów w danej kategorii:

  1.  
  2. // ladujemy kategorie
  3. $sql = 'SELECT * FROM '.$slugsql.'_kategorie ORDER BY ID DESC';
  4. $category = mysql_query($sql);
  5.  
  6. while ($cat = mysql_fetch_array($category))
  7. {
  8.  
  9. $category_title = $cat['nazwa'];
  10. $category_url = $cat['slug'];
  11. $idcat = $cat['id'];
  12. $zapytanie = mysql_query('SELECT COUNT('.$idcat.') FROM red_kategorie_id');
  13. $ile=mysql_result($zapytanie, 0, 0);
  14. echo '<li class="cat-item cat-item-1">';
  15. echo "<a href='http://".$domena."".$slug_category."".$category_url."".$koncowka_category."'>".$category_title."</a> (".$ile.")";
  16. echo '</li>';
  17. }
  18.  
  19.  
  20.  


Rozumię, żę jest to niewydajne, w jaki sposób zrobić aby pobrać to jednym zapytaniem?


Pyatnie dwa: Czy załóżmyprzy 100-120 userach online, takie zapytania zamulą bazę?

nospor
Takie rzeczy robi sie jednym zapytaniem. JOIN ujesz filmy do kategorii, dodajesz GROUP BY oraz COUNT i masz wszystko cacy na talerzu smile.gif

Z php to nie ma zadnego zwiazku. Przenosze.
dgladys
Możesz wykorzystać podzapytanie, generalnie informacje masz o tym tutaj:
http://webmaster.helion.pl/index.php/kursmysql-podzapytania

Zdecydowanie przychylam się ku rozwiązaniu zaproponowanemu nospor
Rozwijając jego myśl na prostym przykładzie zakładając istnienie tabeli Film oraz Category
  1. SELECT c.*, COUNT(*) AS `films_count` FROM Film f INNER JOIN Category c ON c.id = f.category_id WHERE 1 GROUP BY f.category_id
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.