sql >> Databáze >  >> RDS >> Mysql

Získejte všechny novinky a všechny komentáře

Nemůžete to udělat v jednom dotazu – nejlepší je vzít dotaz, který máte, a následně zpracovat výslednou odpověď, abyste získali datovou strukturu, kterou potřebujete.

Pro další upřesnění – jakýkoli dotaz SQL může vrátit pouze dvourozměrné pole dat – jeden rozměr pro sloupce a jeden pro odpovídající řádky. Ve vašem případě to, co vlastně hledáte, je spíše trojrozměrná tabulka.

Všimněte si také, že na váš dotaz se vrátí všechny news data znovu a znovu pro každý komentář ke každému článku. To je neefektivní využití šířky pásma a zdrojů z databázového serveru.

Pravděpodobně je efektivnější to udělat takto (v pseudokódu):

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

První dotaz získá všechny zpravodajské články a vloží je do pole. Druhý dotaz získá komentáře a shromáždí samostatné pole ve struktuře každého zpravodajského článku.



  1. Jak se připojit k MySQL pomocí PHP

  2. Jak vytvořit soubor login.sql pro SQLcl

  3. Python, mysql.connector Chyba:Žádný výsledek nastaven na Fetch From; cgitb ukazuje správnou hodnotu předávanou funkci

  4. jak deklarovat globální proměnnou v SQL Server ..?