Работа с основными / подробными данными SQL в PHP - PullRequest
0 голосов
/ 21 июня 2009

Я новичок, так что терпите меня. Я делаю маленький форум для удовольствия. Проверьте это:

Категории:

  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `position` int(11) NOT NULL,
   PRIMARY KEY (`id`)

Форумы:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `position` int(11) NOT NULL,
  `cat_id` int(11) NOT NULL,
   PRIMARY KEY (`id`)

Интересно, как мне его структурировать, чтобы он выделял категории и назначенные форумы под ним: /

Я на правильном пути?

  <?php
  $query = mysql_query("SELECT * FROM forums JOIN...");
  while ($row = mysql_fetch_array($query)) {..
  ?>

Может быть, какой-нибудь гуру SQL поможет мне.

Ура!

Ответы [ 3 ]

0 голосов
/ 21 июня 2009

Я не знаю PHP, но похоже, что вы хотите использовать один запрос для цикла по категориям, а затем, для каждой категории, для цикла по форумам.

Реляционные базы данных не работают таким образом. Запрос возвращает набор строк в форме таблицы. У него нет родительской / дочерней структуры.

Если PHP способен на это, у вас должен быть родительский запрос, чтобы вернуть все категории, и выполнить цикл по нему. Для каждой категории вызовите дочерний запрос, чтобы вернуть форумы с идентификатором этой категории. Затем зациклитесь на этом.

0 голосов
/ 21 июня 2009

Если вы хотите отобразить категории с форумами под ними на своей странице, я подозреваю, что вам сначала нужно получить набор результатов для категорий, а затем выполнить итерацию по этому списку с помощью другого цикла для списка форумов.

Объединение даст вам один набор записей с категорией в одном столбце, а форум - в другом, что даст вам много строк для одной категории. Как сказал другой ответ, вы на самом деле не ищете объединение:)

Попробуйте что-то вроде этого:

$cat_rs = mysql_query("select id, name from categories");
while($cat_row = mysql_fetch_array($cat_rs)){
     // print category name from $cat_row[1]
     $forum_rs = mysql_query("select name... from forums where cat_id = '" . $cat_row[0] ."'");
     while($forum_row = mysql_fetch_array($forum_rs)){
        //print forum stuff
     }
}
0 голосов
/ 21 июня 2009

Я думаю, вам лучше всего прочитать учебник по присоединению , который поможет вам понять основы.

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