Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie rekordów z 3 tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
the-sopel
Witam, musze zliczyć rekordy z 3 baz, napisałem coś takiego (niestety nie działa, wyświetla 1)
  1. SELECT count(v.id) AS news, count(f.id) AS arts, count(g.id) AS files FROM news v, articles_arts f, download_files g GROUP BY v.id, f.id, g.id

Proszę o pomoc i pozdrawiam.
DawidF
A czemu próbujesz liczyć w jednym zapytaniu od razu z trzech tabel?

Czy nie lepiej po kolei?


SELECT count(id) AS ile_news FROM news
SELECT count(id) AS ile_articles_arts FROM articles_arts
SELECT count(id) AS ile_download_files FROM download_files


Po drodze przypisać wyniki do zmiennych i tyle...

Tworzyć tylko takie piramidalne zapytania dla... no właśnie: po co?
Adiasz
  1. SELECT count(id) FROM news UNION
  2. SELECT count(id) FROM articles_arts UNION
  3. SELECT count(id) FROM download_files

albo:

  1. SELECT count(id),(SELECT count(id) FROM articles_arts),(SELECT count(id) FROM download_files) FROM news
the-sopel
Próbowałem zastosować sposób Adiasza.
Napisałem to tak:
  1. SELECT count(id) AS news,(SELECT count(id) AS arts FROM articles_arts),(SELECT count(id) AS files FROM download_files) FROM news

I wyświetliło
SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count(id) as arts FROM articles_arts),(SELECT count(id)
Dalszy kod wygląda tak:
  1. <?php
  2. if( !($result = $db->sql_query($sql)) )
  3. {
  4. message_die(GENERAL_ERROR, "I couldn't select", '', __LINE__, __FILE__, $sql);
  5. }
  6.  
  7. $row = $db->sql_fetchrow($result);
  8. $template->assign_vars(array(
  9. 'FILES' => $row['files'],
  10. 'NEWS' => $row['news'],
  11. 'ARTS' => $row['arts'])
  12. );
  13. ?>
kossa
Sprawdź wersję swojej bazy danych i sprawdz czy posiada ona możliwość tworzenia podazapytań.

subquery

Łukasz
the-sopel
Hmm, no jak nie działa to znaczy, że nie ma.
Błąd chyba też o tym mówi.
Dlatego chciałem zrobić to jednym zapytaniem (pierwszy post).
Wie ktoś jak zrobić by to działało?

|EDIT|
Problem już rozwiązany, dzięki za pomoc.
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.