|
|
|
|
|
для: LINKIN
(07.02.2010 в 14:00)
| | Последние три три строки по каждой группе - в SQL - тонкий момент.
Не всякая версия сервера поддерживает такие запросы.
Можно, правда, вычерпать все, а вывести только по первой тройке...
SELECT n.*, c.*,s.*, n.title AS n_title, c.title AS c_title, s.title AS s_title
FROM newsfeed n
JOIN categories с ON c.id = n.id_categories
JOIN sections s ON s.id = n.id_sections
ORDER BY s.id, c.id, n.created DESC
|
<?
$res = mysql_query($sql) or die "Error in <pre>$sql</pre>". mysql_error());
for($sd = $cd = ''; $row = mysql_fetch_assoc($res);)
{
if($cd != '' && $cd != $row['id_categories'] || $sd != '' && $sd != $row['id_sections'])
{
echo "<br>"; //end of category
$cd == '';
if($sd != '' && $sd != $row['id_sections'])
{
echo "<hr>"; //end of section
$sd == '';
}
}
if($sd == '')
{
$sd = $row['id_sections'];
$cd = ''; $nl = 0;
echo "<br/><H1>".htmlspecialchars($row['s_title'])."</H1>";
}
if($cd == '')
{
$sd = $row['id_categories'];
$cd = ''; $nl = 0;
echo "<br/><H2>".htmlspecialchars($row['c_title'])."</H2>";
}
if(++$nl <= 3)
echo "<p>".htmlspecialchars($row['created']) . "<br> " .htmlspecialchars($row['n_title']) ."</p>\r\n";
}
|
писал из головы - без проверки. Могут быть ляпы. | |
|
|
|
|
|
|
|
для: Trianon
(07.02.2010 в 12:29)
| | ОК. Даю полностью вид таблицы.
http://webdeveloper.net.ua/table.jpg
теперь что сделать нужно. простыми словами, без терминов
нужно выбрать по три последних события для каждой команды
Опережаю ваш вопрос. "первая таблица - это что? что с ней делать?"
Это секции, когда ты нажимаешь на секцию политика, там выводятся последние три события партий. | |
|
|
|
|
|
|
|
для: LINKIN
(07.02.2010 в 02:40)
| | Результат (любого) SQL-запроса не является двумерным массивом в Вашем понимании.
Результат SQL-запроса это ровная прямоугольная таблица со строками и столбцами.
N строк на M столбцов и никак иначе.
Вам нужно научиться из массива вида
array(
array(1, 110),
array(1, 120),
array(1, 130),
array(2, 210),
array(2, 220),
array(2, 230),
array(3, 310),
array(3, 320),
array(3, 330)
);
|
делать массив вида
array(
array(1, array(110, 120, 130),
array(2, array(210, 220, 230),
array(3, array(310, 320, 330)
);
|
И работа с SQL имеет к этому отношение весьма опосредованное | |
|
|
|
|
|
|
| Есть таблица t1. В ней записи
Динамо
Шахтар
Таврия
Металлург Донецк
Оболонь
|
Есть таблица t2. В этой таблице t2 множество записей и каждая запись соответствует одной конкретной записи из таблица t1 (либо Динамо, либо Шахтар, либо Таврия, либо Металлург Донецк, либо Оболонь). Связь по id.
Как должен выглядеть запрос, который выводит по 3 последних по времени записи из таблицы t2 для каждого из значений таблицы t1? Результатом, очевидно, должен быть двумерный массив.
В итоге картина:
Динамо
1. ...
2. ...
3. ...
Шахтар
1. ...
2. ...
3. ...
Таврия
1. ...
2. ...
3. ...
|
| |
|
|
|
|