Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz wszystkie wiadomości i wszystkie komentarze

Nie możesz tego zrobić w jednym zapytaniu - najlepiej wziąć otrzymane zapytanie i przetworzyć wynikową odpowiedź, aby uzyskać potrzebną strukturę danych.

Rozwijając dalej — każde zapytanie SQL może zwrócić tylko dwuwymiarową tablicę danych — jeden wymiar dla kolumn i jeden dla pasujących wierszy. W twoim przypadku to, czego tak naprawdę szukasz, przypomina bardziej trójwymiarowy stół.

Zwróć też uwagę, że w twoim zapytaniu tak, jak zostało napisane, zwróci wszystkie news dane w kółko dla każdego komentarza do każdego artykułu. To nieefektywne wykorzystanie przepustowości i zasobów serwera bazy danych.

Prawdopodobnie bardziej wydajne jest zrobienie tego w ten sposób (w pseudokodzie):

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

Pierwsze zapytanie pobiera wszystkie artykuły i umieszcza je w tablicy. Drugie zapytanie pobiera komentarze i gromadzi oddzielną tablicę w strukturze każdego artykułu z wiadomościami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać ostrzeżenie mysql:InnoDB:page_cleaner:zamierzona pętla 1000ms zajęła XXX ms. Ustawienia mogą nie być optymalne?

  2. Biblioteka zagnieżdżonego zestawu modelu PHP

  3. MySQL InnoDB Cluster 8.0 — kompletny przewodnik po wdrożeniu:część pierwsza

  4. java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z

  5. MySQL:Błąd usuwania bazy danych (errno 13; errno 17; errno 39)