захватить связанные параметры из другой таблицы и объединить с текущими результатами - PullRequest
0 голосов
/ 08 июля 2011

У меня есть 3 таблицы

  • сайты: ID, имя
  • ассоциация: тип, type_id, site_id
  • Опции: ID, имя

Я бы хотел, чтобы запрос выбирал * сайты, затем выбирал связанные параметры из Assoc и извлекал имена из таблицы параметров.

Код, который я хотел бы сократить до одного запроса:

     $getsites = mysql_query("SELECT * FROM sites")or die(mysql_error());
     while($row = mysql_fetch_array($getsites)){
     echo $row['name'];
     $getassoc = mysql_query("SELECT * FROM assoc WHERE type='options' AND site_id = '$row[ID]'")or die(mysql_error());
      echo'<ul>';
      while($subrow = mysql_fetch_array($getassoc)){
      $getoption = mysql_query("SELECT * FROM options WHERE ID = '$subrow[assoc_id]'")or die(mysql_error());
      $option = mysql_fetch_assoc($getoption);
      echo '<li>'.$option['name'].'</li>';
   }
   echo'</ul><br/>';

   }

1 Ответ

0 голосов
/ 08 июля 2011

Это называется объединением:

select options.name
from sites
inner join assoc on sites.id = assoc.site_id
inner join options on options.id = assoc.assoc_id
where assoc.type = 'options'

Проблема: в таблице ассоциаций нет значения assoc_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...