한 기술은 당신이 할 수있는 두 테이블을 조인하고 SELECT GROUP_CONCAT을 사용하여 단일 변수로 값을 연결하고 네, 나중에 분해 할 수 있습니다().
는 사실 GROUP_CONCAT를 사용하고 이것은 당신이 무엇을 할 수 있습니다 :
mysql> SELECT f.name, GROUP_CONCAT(a.url SEPARATOR ",") AS awards FROM film f JOIN awards a ON a.film_id = f.id;
+-----------------------+-----------------------------------------------------------------------------+
| name | awards |
+-----------------------+-----------------------------------------------------------------------------+
| River Runs Through It | http://www.ariverrunsthroughit.com,http://www.webby.com,http://www.imdb.com |
+-----------------------+-----------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
는 PHP에서, 당신은 위의 쿼리를 사용하여 데이터베이스를 조회하고, 당신이 할 수 다음 변수라는 $ 행의 출력했다라고 수상 실적 변수를 폭발시키고 언급 한대로 별도의 DIVS로 출력하십시오. 여기
<?php
// connection
$query = mysql_query("SELECT f.name, GROUP_CONCAT(a.url SEPARATOR ",") AS awards FROM film f JOIN awards a ON a.film_id = f.id");
while ($row = mysql_fetch_array($query)) {
$title = $row['name'];
// get awards
$awards = explode(",", $row['awards']);
// output title and awards (iterate through array)
echo "<hr>";
echo "<div id='title'>$title</div>";
foreach ($awards AS $award) {
echo "<div id='award'>$award</div>";
}
}
테스트를 구축하는 SQL입니다 :
mysql> create table film (id INT AUTO_INCREMENT, name VARCHAR(24), PRIMARY KEY (id));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO film VALUES (1, "River Runs Through It");
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE awards (id INT AUTO_INCREMENT, film_id INT NOT NULL, url VARCHAR(64), title VARCHAR(24), PRIMARY KEY (id));
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO awards VALUES (1,1,'http://www.ariverrunsthroughit.com','Our Award'), (2,1,'http://www.webby.com', 'Webby Award'), (3,1,'http://www.imdb.com', 'IMDB Award');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
감사합니다. 이것은 약간의 미세 조정으로 작동하는 것 같았습니다. – Tom