Pues .. yo haría simplemente (y sin complicaciones con left join y demas ..)
Una consulta a la tabla preguntas .. obtengo el ID de la pregunta y anidado hago otra consulta a la tabla "opciones" bajo ese id:
Código PHP:
// conectas a tu BD .. etc ...
$consulta_pregunta=msyql_query("SELECT * FROM preguntas");
While ($row=mysql_fetch_array($consulta_preguntas){
$id_pregunta=$row_pregunta['id']; // Obtengo el ID de la pregunta.
echo $row_pregunta['pregunta']; // Muestro la pregunta ...
$consulta_pregunta=msyql_query("SELECT * FROM preguntas WHERE PreguntaID='$id_pregunta'"){
while ($row_opciones=mysql_fetch_array($consulta_pregunta){
echo $row_opciones['opcion']; // Muestro las opciones y resto de campos de esa tabla "opciones"
}
}
Tal vez en SQL usando DISTINCT consigues no repetir, pero como el "left join" y demas no es mi fuerte jeje .. pues ahí va una solución "rudimentaria" pero efectiva.
Un saludo,