Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - pobieranie z dwóch tabel + COUNT
Forum PHP.pl > Forum > Przedszkole
Mega_88
Witam, problem dotyczy z pobraniem rekordów z dwóch tabel w jednym zapytaniu przy użyciu "while". Jeżeli robie wszystko w dwóch osobnych zapytaniach to ładnie mi to działa tylko chciałbym to połączyć żeby otrzymać taki wynik "Galeria Motoryzacja - 25 zdjęć. Poniżej jak robie to w dwóch odzielnych zapytaniach tylko, że nie otrzymuje tego w takiej formie jak napisałem:

  1. $query=mysql_query("SELECT * FROM strony WHERE idk=2 AND status=1 ORDER BY data DESC");
  2. while($wynik=mysql_fetch_array($query)) {
  3. $idg=reset(mysql_fetch_row(mysql_query("SELECT idg, COUNT(idg) FROM zdjecia GROUP BY idg")));
  4. echo $idg. '-';
  5. echo $wynik['tytul'].'<br />';
  6. }
  7. $query = ("SELECT idg, COUNT(idg) FROM zdjecia GROUP BY idg");
  8. $result = mysql_query($query) or die(mysql_error());
  9. while($wynik = mysql_fetch_array($result)){
  10. echo $wynik['idg'].' zdjęcia<br />';
  11. }


A zależy mi na połączeniu tego w jedno przy użyciu "function"

Obecnie mam zrobione to tak z pobraniem rekordów z "FROM strony", a wygląda to tak:

  1. function bankzdjec($lang) {
  2. $query=mysql_query("SELECT * FROM strony WHERE idk=2 AND status=1 ORDER BY data DESC");
  3. while($wynik=mysql_fetch_array($query)) {
  4.  
  5. $o .= '
  6. <li data-id="'.$wynik['id'].'" class="util">
  7. <a href="'.changeLang($wynik['id'],$lang).'"><img src="images/finder.png" width="128" height="128" alt="" /></a>
  8. <strong>'.lang($lang,$wynik['tytul'],$wynik['tytulen'],$wynik['tytulde'],$wynik['tytulru']).'</strong>
  9. <span>Ilość - tutaj rekord odnośnie ilość zdjęć z drugiego zapytania</span>
  10. </li>
  11.  
  12. ';
  13. }
  14. return $o;
  15. }
  16.  


W miejsciu "<span>Ilość - tutaj rekord odnośnie ilość zdjęć z drugiego zapytania</span>" chciałbym żeby wyświetlała mi się informacja z drugiego zapytania odnośnie ilości zdjęć w danej galerii. Jak to zrobić ? Troche już skończyły mi sie pomysły.
jaslanin
ogólnie możesz to zrobić używając podzapytania ang. subquery, dokładnie jak zapytanie miało by wyglądać zależy od tego jakimi kolumnami są powiązane obie tabele, ale mogło by to wyglądać np. tak jeżeli powiązanie jest na bazie kolumny idg

Kod
SELECT *, (SELECT COUNT(idg) FROM zdjecia z WHERE z.idg=s.idg) img_count FROM strony s WHERE idk=2 AND status=1 ORDER BY data DESC
Mega_88
Dziękuje za pomoc działa dobrze o to mi właśnie chodziło. Cenna lekcja, pozdrawiam

p.s - +1 pomógł
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.