|
|
|
| нужно вывести две последние новости из каждой категории, возможно ли это одним запросом, и каким образом он должен выглядеть?
таблица news в БД у меня такая
+---+------+----+
|id | name |cat |
+---+------+----+
| 1 |title1| 1 |
| 2 |title2| 5 |
| 3 |title3| 3 |
| 4 |title4| 8 |
| 5 |title5| 12 |
+---+-----+-----+ | |
|
|
|
|
|
|
|
для: web777
(18.09.2008 в 19:23)
| | пожалуйста, ктонибудь сможет посоветовать по данному вопросу, как реализовать ? | |
|
|
|
|
|
|
|
для: web777
(19.09.2008 в 21:22)
| | SELECT название_поля_новостей FROM название таблицы ORDER BY id_новости DESC LIMIT 0,2
попробуй так...первое что пришло в голову.... | |
|
|
|
|
|
|
|
для: psychomc
(22.09.2008 в 13:43)
| | Вот попробуйте, убедитесь, что это задачу не решает,
и первое, что пришло в голову, придерживайте при себе.
to web777:
одним запросом это не сделать.
Можно попробовать двумя-тремя (WHERE NOT id IN($list1))
Но сложность запросов будет аховая. | |
|
|
|
|
|
|
|
для: Trianon
(22.09.2008 в 14:09)
| | Вот попробуйте, убедитесь, что это задачу не решает,
и первое, что пришло в голову, придерживайте при себе.
to web777:
одним запросом это не сделать.
Можно попробовать двумя-тремя (WHERE NOT id IN($list1))
Но сложность запросов будет аховая.>Вот попробуйте, убедитесь, что это задачу не решает,
>и первое, что пришло в голову, придерживайте при себе.
>
>to web777:
>одним запросом это не сделать.
>Можно попробовать двумя-тремя (WHERE NOT id IN($list1))
>Но сложность запросов будет аховая.
ну во-первых это форум,поэтому можно оставлять любое мнение,у уже прислушиваться к нему или нет дело только автора, а во-вторых в названии темы не было написано ничего вроде "осталяйте только проверенные рабочие решения иначе идите нах"
тем более вопрос был не очень понятно сформулирован | |
|
|
|
|
|
|
|
для: psychomc
(22.09.2008 в 15:32)
| | пардон...вопрос нормально сформулирован,когда читал спешил и не посмотрел структуру таблицы | |
|
|
|
|
|
|
|
для: web777
(18.09.2008 в 19:23)
| | Получи из базы уникальный список всех категорий, и потом прогони через foreach() SELECT ... LIMIT 2; | |
|
|
|
|
|
|
|
для: mtxd
(22.09.2008 в 16:44)
| | да прочтите же вы наконец вопрос!
>>>...возможно ли это одним запросом... | |
|
|
|
|
|
|
|
для: mtxd
(22.09.2008 в 16:44)
| | подскажите как удалить функцию созданную при помощи CREATE FUNCTION
пробовал извлекать одним запросом , медленно работает
а функция осталась :)
<?
CREATE TABLE IF NOT EXISTS examplm (
id int(11) NOT NULL auto_increment,
name VARCHAR(255) NOT NULL,
cat int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO examplm (name, cat)
VALUES(
'title1', 1),('title6', 1),
('title2', 5),('title7', 5),
('title3', 3),('title8', 5),
('title4', 8),('title9', 8),
('title5', 12),('title10', 8);
#/*
DELIMITER $$
CREATE FUNCTION last2_in_cat(id_cat INT) RETURNS INT
READS SQL DATA
BEGIN
DECLARE i_out INT;
SELECT id INTO i_out
FROM examplm
WHERE cat = id_cat
ORDER BY id DESC
LIMIT 1, 1;
RETURN i_out;
END $$
DELIMITER ;
#*/
# одгим запросом по две последних записи
SELECT * FROM examplm
WHERE id >= last2_in_cat(cat)
ORDER BY cat , id DESC;
#DROP TABLE examplm;
# не работает DROP FUNCTION last2_in_cat;)
|
| |
|
|
|
|
|
|
|
для: xx77
(22.09.2008 в 18:44)
| |
res = mysql_query("SELECT * FROM news group by сat " );
while($p = mysql_fetch_array($res) )
{
$result = mysql_query("SELECT * FROM news WHERE cat='$p[cat]' ORDER BY id DESC LIMIT 2" );
while($s = mysql_fetch_array($result) )
{
echo $s[name]."<br>";
}
}
| это ответ на первый вопрос
$это можно сделать конечно и одним запросом с кучей подзапросами. | |
|
|
|