Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Цикл Mysql
 
 автор: OLi   (11.01.2013 в 19:37)   письмо автору
 
 

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, но выдает о возвратившихся строк. В чем загвозка? Если в таблице есть записи попадающие под условия

  Ответить  
 
 автор: cheops   (11.01.2013 в 21:36)   письмо автору
 
   для: OLi   (11.01.2013 в 19:37)
 

>но выдает о возвратившихся строк.
Ммм... не очень понятно, что имеется в виду?

  Ответить  
 
 автор: OLi   (11.01.2013 в 21:41)   письмо автору
 
   для: cheops   (11.01.2013 в 21:36)
 

# MySQL вернула пустой результат (т.е. ноль строк). *

  Ответить  
 
 автор: OLi   (11.01.2013 в 22:52)   письмо автору
 
   для: OLi   (11.01.2013 в 21:41)
 

В общем цель такая - может я пошел не тем путем:
У меня есть записи где block = 2 block = 3 block = 4 block = 5
Мне нужно одним запросом выбрать по 3 первых записей для каждого условия.
Т-е получить нечто вроде этого:

222
333
444
555

  Ответить  
 
 автор: Sfinks   (12.01.2013 в 08:51)   письмо автору
 
   для: OLi   (11.01.2013 в 22:52)
 

SELECT concat(`block`,`block`,`block`) FROM tbl

  Ответить  
 
 автор: oradev   (18.01.2013 в 14:33)   письмо автору
 
   для: Sfinks   (12.01.2013 в 08:51)
 

Sfinks, да вы что издевайтесь что ли, автор просит вывести TOP-записей для каждого параметра. Причем здесь concat, может поясните неучу к чему вы это понаписали ?

Автор, есть такой проверенный метод, покажу на примере таблицы каталог(содержащей информацию о каталоге продуктов) и таблица продукты: отношение M - 1.

catalog

id - PK 
product_id - FK
name  


product

id - PK
name



Таким образом, вам необходимо вывести информацию скажем о любых 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

Но для общего развития ее следует изучить обязательно, такие задачи встречаются часто.

  Ответить  
 
 автор: Sfinks   (20.01.2013 в 15:17)   письмо автору
 
   для: oradev   (18.01.2013 в 14:33)
 

> автор просит вывести TOP-записей для каждого параметра
Ну как автор объясняет, такие и ответы получает.
За целую неделю только Вы один смогли понять, что ему надо.
А я уж устал всем (и конкретно автору этой темы в частности) повторять, что для получения грамотного ответа нужно грамотно задать вопрос. Желательно с дампом структуры задействованных таблиц и данных.

  Ответить  
 
 автор: oradev   (18.01.2013 в 15:27)   письмо автору
 
   для: OLi   (11.01.2013 в 22:52)
 

>Мне нужно одним запросом выбрать по 3 первых записей.

Вот это есть большое заблуждение, не такого понятия 3 первых записей, в базе данных записи хранятся в хаотичном порядке -
это всегда помните.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования