Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете всички новини и всички коментари

Не можете да направите това с една заявка – най-добре е да вземете заявката, която имате, и да обработите последващо получения отговор, за да получите структурата от данни, от която се нуждаете.

За да уточним по-подробно - всяка SQL заявка може да върне само двуизмерен масив от данни - едно измерение за колоните и едно за съвпадащите редове. Във вашия случай това, което всъщност търсите, е по-скоро като триизмерна таблица.

Обърнете внимание също, че на вашата заявка, както е написано, ще върне всички news данни отново и отново за всеки коментар срещу всяка статия. Това е неефективно използване на честотната лента и ресурса от сървъра на базата данни.

Вероятно е по-ефективно да го направите по този начин (в псевдокод):

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;
}

Първата заявка получава всички новинарски статии и ги поставя в масив. Втората заявка получава коментарите и натрупва отделен масив в структурата на всяка новинарска статия.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да INNER JOIN 3 таблици с помощта на CodeIgniter

  2. Конвертирайте MySQL в SQlite

  3. Симулиране на функция за забавяне на MySQL

  4. Каква е разликата между cachePrepStmts и useServerPrepStmts в MySQL JDBC драйвер

  5. JSON_SEARCH() – Намерете пътя към низ в JSON документ в MySQL