Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] SELECT id, fld, tableB_name, (SELECT count(*) FROM tableB_name) AS count FROM tableA
Forum PHP.pl > Forum > Bazy danych > MySQL
jol.us_
Witam,

Chciałbym wykonać zliczanie rekordów za pomocą jednego zapytania, gdzie:
- pobieram rekordy z Tabeli A
- zliczam rekordy w Tabeli B, gdzie nazwa Tabeli B jest zawarta w rekordzie kolumny Tabeli A

Coś na zasadzie:

  1. SELECT id, fld, tableB_name, (SELECT count(*) FROM tableB_name) AS count FROM tableA


Czyli w TableA, w kolumnie tableB_name przechowuje nazwę tabeli, której potem używam przy zliczaniu.

Oczywiście powyższe zapytanie generuje błąd.
Czy jest w ogóle opcja aby coś takiego wykonać w jednym zapytaniu, bez wrzucania zliczania wewnątrz pętli na podstawie pobranego rekordu?
vokiel
Zwykły JOIN powinien załatwić sprawę.
trueblue
Nie jest to możliwe w jednym zapytaniu.
Jeśli przechowujesz nazwy tabel jako wartości kolumny w innej tabeli, to być może jest coś nie tak ze strukturą bazy. Domyślam się, że każda z tych tabel ma taką samą strukturę, a zostały podzielone na odrębne ze względu na jakieś archiwizowanie danych w określonych odstępach czasu.

Możliwe jest jedno zapytanie, ale wygenerowane w PHP:
- pobranie nazw tabel,
- wygenerowanie jednego zapytania opartego o UNION i pobrane nazwy tabel.
jol.us_
Cytat(trueblue @ 15.04.2021, 09:18:29 ) *
Nie jest to możliwe w jednym zapytaniu.
Jeśli przechowujesz nazwy tabel jako wartości kolumny w innej tabeli, to być może jest coś nie tak ze strukturą bazy. Domyślam się, że każda z tych tabel ma taką samą strukturę, a zostały podzielone na odrębne ze względu na jakieś archiwizowanie danych w określonych odstępach czasu.

Możliwe jest jedno zapytanie, ale wygenerowane w PHP:
- pobranie nazw tabel,
- wygenerowanie jednego zapytania opartego o UNION i pobrane nazwy tabel.


Tak też myślałem, że to niemożliwe.

Struktura może jest dziwna, ale raczej prawidłowa. Po prostu dynamicznie tworzę/usuwam table bazy danych o różnych strukturach, a listę tych tabel wraz z ich właściwościami i innymi informacjami trzymam w oddzielnej tabeli. To wynika ze specyfiki projektu i tego, że nie mogę trzymać wszystkich rekordów w obrębie jednej tabeli i wiązać jej np. z kluczem obcym umieszczonym w kolumnie. W tym przypadku rekordy są rozdzielane na różne tabele, a kluczem obcym jest po prorstu nazwa tabeli.
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-2024 Invision Power Services, Inc.