Mysql
 sql >> Database >  >> RDS >> Mysql

Scarica tutte le notizie e tutti i commenti

Non puoi farlo in una query:è meglio prendere la query che hai e post-elaborare la risposta risultante per ottenere la struttura dei dati di cui hai bisogno.

Per elaborare ulteriormente, qualsiasi query SQL può restituire solo una matrice di dati bidimensionale:una dimensione per le colonne e una per le righe corrispondenti. Nel tuo caso, ciò che stai effettivamente cercando è più simile a una tabella tridimensionale.

Nota anche che sulla tua richiesta come scritto verranno restituite tutte le news dati più e più volte per ogni commento su ogni articolo. Questo è un uso inefficiente della larghezza di banda e delle risorse del server di database.

Probabilmente è più efficiente farlo in questo modo (in pseudocodice):

SELECT * FROM news
...
foreach ($rows as $row) {
  $row['comments] = array();
  $news[$row['id']] = $row;
}

SELECT * FROM comments
...
foreach ($rows as $row) {
  $news[$row['news_id']]['comments'][] = $row;
}

La prima query ottiene tutti gli articoli di notizie e li inserisce in un array. La seconda query ottiene i commenti e accumula un array separato all'interno della struttura di ogni articolo di notizie.