Извеждане и групиране по колони резултатите от две таблици

dijon

Registered
Задачата е следната, имам две таблици, едната е

catid (PK) - код на категорията
cat - има на категорията

Втората таблица:
id (PK) - код
title - заглавие на артикула за съответната категория
info - описание
catid (FK) - външен ключ, връзка с първата таблица

Идеята е да се извежда в таблицата така:

cat
- title 1
- title 2
- title 3
cat 2
- title 10
- title 13
- title 88
cat n
- ...
- ....


Създал съм следното "мазало", което не работи...

PHP:
$sql=mysql_query("SELECT T.*, C.* FROM Titles AS T JOIN Cats AS C ON C.catid=T.catid GROUP BY C.cat");
$col=0;
echo "<table cellpadding='5'><tr>";

while($res=mysql_fetch_array($sql)) {
$col++;
echo "<td><u>".$res['cat']."</u><br/><br/>";

while($res['C.catid']==$res['T.catid']){
echo $res['title']."<br/>";
} echo "</td>";

if ($col==4) {
echo '</tr><tr>';
$col=0;}
}; echo "</tr></table>";

Не знам как да изведа резултатите към съответната категория...
 
То и аз го мисля с втора заявка, но идеи как да ги навържа двете заявки, за да отива резултата към съответната категория?
 
[sql]SELECT cat,GROUP_CONCAT(title SEPARATOR '<br />') AS BLA FROM Cats,Titles
WHERE Cats.catid=Titles.catid
GROUP BY cat
ORDER BY cat ASC;
[/sql]
 
Благодаря за заявката, но не разбрах какво да я правя... смених я с моята, но пак нищо, обхождането на резултата за TITLE-а към категорията не ми работи...
 
След четири дни тестване на различни СЛОЖНИ кодове, открих един прост, който върши чудесна работа. Тестван и работи:

PHP:
$sql = mysql_query("SELECT * FROM db ORDER BY category ASC");
$cat = ""; //initialize $cat variable 
while($row = mysql_fetch_assoc($sql)){ 
if($row['category'] != $cat) echo "<h3>".$row['category']."</h3>\r\n"; 
echo "<p>".$row['value']."</p>\r\n"; 
$cat = $row['category']; 
}

Кода е взет от http://www.webmaster...php/3621950.htm Да са живи и здрави програмистите в този форум.
 
PHP:
$sql = mysql_query("SELECT cat,
GROUP_CONCAT('<p>',title,'</p>') AS BLA 
FROM Cats,Titles
WHERE Cats.catid=Titles.catid
GROUP BY cat
ORDER BY cat ASC");
while($row = mysql_fetch_assoc($sql))
echo "<h3>".$row['cat']."</h3>".$row['BLA'];
:wink:
 

Back
Горе