Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GROUP BY i zależność od innej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
krysk
Witam,

chciałbym pobierać dane z tabeli A w zależności od sumy rekordów spełniających dany warunek w innej kolumnie. Chciałbym to zrobić w jednym zapytaniu, w dwóch wyglądałoby to następująco:

  1. <?php
  2. $num = mysql_num_rows(mysql_query("SELECT id_a FROM tabela1 WHERE `id_a`='". $id_a. "'"));
  3. $q = mysql_query("SELECT * FROM tabela2 WHERE `kom`>'". $num "'");
  4. ?>


Próbowałem to rozwiązać poprzez:

  1. SELECT
  2. serwer_article.*, COUNT(serwer_dodano.id_a) AS dod
  3. FROM serwer_article, serwer_dodano
  4. WHERE COUNT(serwer_dodano.id_a) < serwer_article.sum
  5. GROUP BY serwer_dodano.id_a


Ale niestety to nie działa... Gdzie leży problem?
prond
Nie możesz się odwołać w klauzuli WHERE do agregatu wyliczonego w tym samym zapytaniu.
Musisz to zrobić stosując podzapytanie, w którym zliczysz rekordy, dopiero potem możesz założyć na nie warunek:
  1. SELECT * FROM ( SELECT
  2. serwer_article.*, COUNT(serwer_dodano.id_a) AS dod
  3. FROM serwer_article, serwer_dodano
  4. GROUP BY serwer_article.*) AS a,
  5. serwer_article
  6. WHERE a.dod < serwer_article.sum
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.