Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Хранимая процедура или другой вариант реализации


Автор: alexpotemkin 9.1.2009, 13:59
Прошу помощи, т.к. слаб в MySQL, а реализовать хотелось бы быстрей.  Есть две таблицы, не связаны друг с другом ключами, единственное что есть общее у них это поле даты и поле (флаг) ls, ниже пример структуры таблиц
table1 (oper)
id, ls, mid, oper_date
table2 (visit)
id, ls, date, raw, uniq, oper  

запросы целевые к двум таблицам
Код

SELECT o.ls, count(DISTINCT o.mid) as micount
FROM v.oper o
WHERE (o.res =1) AND (o.oper_date >= '2008-12-01') AND (o.oper_date <= '2009-02-01')
GROUP BY m.ls
ORDER BY m.ls;


Код

SELECT v.LS, sum(v.raw) AS raw, sum(v.uniq) AS uniq, sum(v.oper) AS oper, (sum(v.uniques)/sum(v.oper)) AS calc1
FROM v.visit v
WHERE (v.date >= '2008-12-01') and (v.date <= '2009-02-01') and (v.ls>0)
GROUP BY v.ls
ORDER BY v.ls,calc1;


структуру не меняем нужно выкрутится при помощи процедуры или хитрого запроса, в interbase накатал бы хранимку за пять минут, а тут никак не соображу как такое делается, вот что первое попалось под руку подобная реализация в interbase, нужно что то в этом духе.
Код

CREATE PROCEDURE VIEW_GROUP (
    group_name varchar(255))
returns (
    word varchar(255),
    synonym varchar(255),
    synonym_count smallint,
    new_field integer)
as
begin
  for select word, synonym, synonym_count
      from words_base
      where (is_group=0) and (group_name=:group_name)
      order by synonym_count desc
      into :word, :synonym, :synonym_count
  do begin
    select field from table2 where group_name=:group_name
    into :new_field;
    suspend;
  end
end

Винград - прошу помощи и подсказок.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)