Jeśli jest 1 pytanie-> 1 odpowiedź to 1 zapytanie wystarczy w zupełności.
Jeśli natomiast 1 pytaniu odpowiada kilka odpowiedzi to sprawa jest trochę bardziej złożona i będą potrzebne 2 zapytania. Ja akurat mam odpowiednie klasy, które ułatwiają mi odczytywanie takich zapytań.
W skrócie u mnie wygląda to tak:
-> 1 zapytanie w celu odczytania wszystkich pytań, które potrzebujesz
-> 2 zapytanie, które odczytuje właściwe odpowiedzi.
Wczoraj robiłem podobny odczyt dla produtków, które mają pewne własności (typu nazwa cena itp) oraz dodatkowe cechy -> np. kolor itp - każdy produkt może mieć różne cechy i różną ich liczbę.
U mnie wyglądało to mniej więcej tak
<?php
/**
* Zwraca tablice danych o obiekcie
*
* Tablica ma postac
* [id_produktu] (array)
* =>[productData](array)
* =>[featuresData](array)
* =>[feature 1] (array)
* =>...
* =>[feature x] (array)
*
* @param array|int $arId
* @return array
*/
public static function getDataById
($arId) {
//tu są 2 zapytanie zwracają wartość $productRestult o produkcie i $resultFeatures
cechy produktów - nie zamieszczam zapytan zeby nie gmatwac - bylo kilka joinow itp. bo wyniki byly z roznych tabel
//przygotowanie tablicy wynikowej - > klucz to id potem tablica skladajaca sie z tablicy
//z info o produkcie oraz tablicy cech.
foreach ($ProductResult as $row)
{
$resultArray[$row['product_id']]=array('productData'=>$row, 'featuresData'=>array
()); //dla kazdego nowego produktu tworzymy tablice 2 elementowa z danymi produktu (productData) oraz kolekcja cech ('featuresData') - ta tablica na razie pusta - dodamy cechy w nastepnej petli
}
foreach ($resultFeatures as $row)
{
//teraz lecimy po odczytanych cechaach i dodajemy je do glownej tablicy
$resultArray[$row['article_id']]['featuresData'][]=$row;
}
return $resultArray;
}
?>