Zrobilem cos takiego:
<?php
$query = "SELECT news . * , GROUP_CONCAT( DISTINCT game ORDER BY game DESC SEPARATOR ', ' ) as dupa
FROM news LEFT JOIN news_cat ON news_cat.id_news = news.id_news
LEFT JOIN games ON news_cat.id_cat = games.id_game GROUP BY id_news LIMIT 0 , 30";
}
?>
vs
<?php
$query = "SELECT * from news";
$query22 = "SELECT games.game from news_cat,games where news_cat.id_news=".$line['id_news']." and news_cat.id_cat=games.id_game";
}
}
?>
przy petli 100x pobran:
1 sposob 0.24362802505493
2 sposob 0.35362802505493
Baza liczy okolo 20-30 newsow(malo), kategori(games) - liczy okolo 20, a a news_cat liczy tez okolo 20
Wszystko fajnie... ale co jak chcemy pokazac inaczej te dane niz nazwa1, nazwa2, nazwa3 ?
jesli np chcemy zrobic z tego <a href="link do newsow tylko danej kategori>nazwa1</a>,<a href="link do newsow tylko danej kategori>nazwa2</a>?
Mamy pobrac w nastepne pole(albo to samo id)? i bawic sie tym? utworzyc z tego tablice a potem wyswietlic? (Wszystko to kosztuje czas)...
Znalazlem jeszcze jeden sposob
<?php
$query = "SELECT * from news order by id_news";
$wynik[$line['id_news']] = array( // 1 'id_news' => $line['id_news'],
'title' => $line['title'],
);
}
$query22 = "SELECT news_cat.id_news,games.game,games.id_game from news_cat,games where news_cat.id_cat=games.id_game";
$wynik[$line22['id_news']]['cat'][] = array( // 4 'game' => $line22['game'],
'id_game' => $line22['id_game']
);
}
$i=0;
foreach($wynik as &$news_show)
{
$i++;
echo '<h3>'.$i.'. '.$news_show['title'].' ('.$news_show['id_news'].')</h3>'; foreach($news_show['cat'] as &$kategoria)
{
echo '<p><i>'.$kategoria['game'].'</i> (Wyd. '.$kategoria['id_game'].')</p>';
}
}
}
?>
Jesli chodzi o czas wykonania dla 100 pobran to jest on wiekszy od 1 sposob z postu wyzej i mniejszy od 2 sposob z postu wyzej.
Tylko ze tych kategori nie ma duzo (okolo 20)... a co jak ich bedzie 200 ? Ten sposob wtedy sie mija z celem...
Jaka jest najbardziej optymalna droga?