|
|
|
|
DELIMITER $$
DROP PROCEDURE IF EXISTS test$$
CREATE PROCEDURE test()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE num INT DEFAULT 0;
DECLARE param INT DEFAULT 0;
WHILE count < 9 DO
IF num = 3 THEN
SET param = param + 1;
SET num =0;
END IF;
SELECT * FROM instans_type WHERE block = param;
SET count = count + 1;
SET num = num + 1;
END WHILE;
END$$
DELIMITER;
|
Пытаюсь вывести по 3 первых записи для каждого из условий block = param, но выдает о возвратившихся строк. В чем загвозка? Если в таблице есть записи попадающие под условия | |
|
|
|
|
|
|
|
для: OLi
(11.01.2013 в 19:37)
| | >но выдает о возвратившихся строк.
Ммм... не очень понятно, что имеется в виду? | |
|
|
|
|
|
|
|
для: cheops
(11.01.2013 в 21:36)
| | # MySQL вернула пустой результат (т.е. ноль строк). * | |
|
|
|
|
|
|
|
для: OLi
(11.01.2013 в 21:41)
| | В общем цель такая - может я пошел не тем путем:
У меня есть записи где block = 2 block = 3 block = 4 block = 5
Мне нужно одним запросом выбрать по 3 первых записей для каждого условия.
Т-е получить нечто вроде этого:
222
333
444
555 | |
|
|
|
|
|
|
|
для: OLi
(11.01.2013 в 22:52)
| |
SELECT concat(`block`,`block`,`block`) FROM tbl
|
| |
|
|
|
|
|
|
|
для: Sfinks
(12.01.2013 в 08:51)
| | Sfinks, да вы что издевайтесь что ли, автор просит вывести TOP-записей для каждого параметра. Причем здесь concat, может поясните неучу к чему вы это понаписали ?
Автор, есть такой проверенный метод, покажу на примере таблицы каталог(содержащей информацию о каталоге продуктов) и таблица продукты: отношение M - 1.
catalog
id - PK
product_id - FK
name
|
product
Таким образом, вам необходимо вывести информацию скажем о любых 3-ех каталогах каждого продукта ( у вас параметра block, если я верно понял вашу цель):
SELECT t1.*
FROM (SELECT cat.*,
if(@type = cat.product_id, @num := @num + 1, @num := 1) AS row_number,
@type := cat.product_id
FROM (select * from catalog order by catalog.product_id) AS cat, (SELECT @num := 0, @type := 0) AS z) t1
WHERE t1.row_number < 3;
|
Отчасти эта проблема поднималась здесь
http://softtime.ru/forum/read.php?id_forum=3&id_theme=58271&page=2
Но для общего развития ее следует изучить обязательно, такие задачи встречаются часто. | |
|
|
|
|
|
|
|
для: oradev
(18.01.2013 в 14:33)
| | > автор просит вывести TOP-записей для каждого параметра
Ну как автор объясняет, такие и ответы получает.
За целую неделю только Вы один смогли понять, что ему надо.
А я уж устал всем (и конкретно автору этой темы в частности) повторять, что для получения грамотного ответа нужно грамотно задать вопрос. Желательно с дампом структуры задействованных таблиц и данных. | |
|
|
|
|
|
|
|
для: OLi
(11.01.2013 в 22:52)
| | >Мне нужно одним запросом выбрать по 3 первых записей.
Вот это есть большое заблуждение, не такого понятия 3 первых записей, в базе данных записи хранятся в хаотичном порядке - | |
|
|
|