/ / update dove selezionare con count mysql - mysql, sql, join, sql-update

aggiornare dove selezionare con conteggio mysql - mysql, sql, join, sql-update

Ho un tavolo chiamato "persone" e le persone hanno untabella associata denominata "aspetti". Mi piacerebbe aggiornare la tabella delle persone con il "appearance_count" selezionato con un join di sinistra in MySQL. Sto solo avendo qualche problema con la sintassi. Dove inserirò la mia dichiarazione di aggiornamento nella seguente query. Ho provato un aggiornamento simile a questo ma ho continuato a ricevere un errore "impossibile aggiornare la stessa tabella della tabella selezionata" (o qualcosa del genere). Ecco la mia query nel suo modulo di selezione raw:

 SELECT        people.*,
COUNT(appearances.id) as app_count,
FROM          `people`
INNER JOIN    `appearances`
ON            `appearances`.`person_id` = `people`.`id`
GROUP BY      `people`.`id`
HAVING        app_count > 0;

Come dovrei prendere "app_count" e impostare people.appearance_count come tale valore?

risposte:

4 per risposta № 1

credo HAVING non è necessario perché filtrerà i record che hanno a COUNT di maggiore di zero e ti unirai con il tavolo PEOPLE utilizzando LEFT JOIn.

UPDATE  people a
LEFT JOIN
(
SELECT b.id, COUNT(c.person_ID) totalCOunt
FROM    people b
INNER JOIN    appearances c
ON c.person_id = b.id
GROUP BY b.id
) d ON a.ID = d.ID
SET     a.appearance_count = d.totalCount