Cześć,

mam trzy tabele:
kategorie:
id
nazwa

artykuly:
id
kid //id kategorii
tytul
opis

info_art:
id_artykulu
id_uzytkownika

Chciałbym to połączyć tak aby zliczało mi ile w kategorii jest artykułów, które zostały przeczytane przez użytkownika...

Da się to zrobić jednym zapytaniem?

Do tej pory robiłem coś takiego:
  1. $kategorie = array();
  2. $kat = array();
  3. $wynik = query ("SELECT nazwa, id FROM kategorie ORDER BY title ASC");
  4. while ($rekord = mysql_fetch_array ($wynik)) {
  5. $kategorie[] = $rekord;
  6. $kat[] = $rekord['id'];
  7. }
  8.  
  9. $ilosc = array();
  10. $cosik1 = " kid IN (".implode(',' ,$kat).")";
  11. $sql = "SELECT kid, count(id) FROM artykuly where id IN (SELECT id_artykulu FROM info_art WHERE id_uzytkownika= '{$id}') AND ".$cosik1." GROUP BY kid";
  12. $wynik = query ($sql);
  13. while ($rekord = mysql_fetch_array ($wynik)) {
  14. $ilosc[$rekord['ilosc']] = $rekord[1];
  15. }
  16.  
  17. foreach ($kategorie as $rekord) {
  18. $id = $rekord['id'];
  19. $nazwa = $rekord['nazwa'];
  20. if (!isset($ilosc[$id]) || $ilosc[$id] =='') {
  21. $ilosc[$id] = 0;
  22. }
  23.  
  24. print "$nazwa /".$ilosc[$id]."/<br />";
  25.  
  26. }