Czy istnieje sposób na określenie pola zapytania nadrzędnego z podzapytania w mySQL?Jak określić pole zapytania nadrzędnego z podkwerendy w mySQL?
Na przykład:
Napisałem podstawowy program typu Tablica ogłoszeń w PHP.
W bazie danych każdy wpis zawiera: id (PK) i parent_id (id macierzystego wpisu). Jeśli wpis jest sam w sobie rodzicem, to jego parent_id jest ustawiony na 0.
Próbuję napisać zapytanie mySQL, które znajdzie każdy wpis nadrzędny i liczbę dzieci, które rodzic ma.
$query = "SELECT id, (
SELECT COUNT(1)
FROM post_table
WHERE parent_id = id
) as num_children
FROM post_table
WHERE parent_id = 0";
Najtrudniejsze jest to, że pierwszy id nie wie, że powinno się odnosić do drugiego id który jest poza podzapytania. Wiem, że mogę zrobić SELECT id AS id_tmp, a następnie odwołać się do niego wewnątrz podkwerendy, ale jeśli chcę również zwrócić identyfikator i zachować "id" jako nazwę kolumny, to musiałbym wykonać zapytanie, które zwraca me 2 kolumny z tych samych danych (co wydaje mi się brudny)
$query = "SELECT id, id AS id_tmp,
(SELECT COUNT(1)
FROM post_table
WHERE parent_id = id_tmp) as num_children
FROM post_table
WHERE parent_id = 0";
niechlujny sposób działa dobrze, ale czuję się okazją do nauczenia się czegoś tutaj więc pomyślałem, że mogę napisać pytanie.
co jeśli wziąłem alias dla p1.id? –
Co to oznacza? "wzięto alias dla"? – Don
Jeśli wziąłem alias jak: "SELECT p1.id jako MYID", to jakie będzie zapytanie? –