sql >> Databasteknik >  >> RDS >> Mysql

Hämta alla nyheter och alla kommentarer

Du kan inte göra det i en fråga - bäst att ta frågan du har och efterbehandla det resulterande svaret för att få den datastruktur du behöver.

För att utveckla ytterligare - alla SQL-frågor kan bara returnera en tvådimensionell array av data - en dimension för kolumnerna och en för de matchande raderna. I ditt fall är det du faktiskt är ute efter mer som ett tredimensionellt bord.

Observera också att på din fråga som skriven kommer alla news att returneras data om och om igen för varje kommentar mot varje artikel. Det är en ineffektiv användning av bandbredd och resurs från databasservern.

Det är förmodligen mer effektivt att göra det så här (i pseudokod):

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

Den första frågan hämtar alla nyhetsartiklar och placerar dem i en array. Den andra frågan får kommentarerna och ackumulerar en separat array inom varje nyhetsartikels struktur.



  1. Importera MySQL-databas från en server till en annan

  2. 5 sätt att uppdatera data med en underfråga i Oracle SQL

  3. MySQL Prepare Statement - Maximal längd 1000 tecken

  4. Det gick inte att skapa den begärda tjänsten [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]