Зарос на выборку
Зарос на выборку
Народ помогите решить задачку, второй день ничего не идет.
У меня есть определенная таблица с 2-х полей (ID, text). значения поля text очень часто повторяются так как это выборка одного из 10 слов ("один", "два", ...., "десять").
как мне построить зарос таким образом что при указании параметра (определенного слова - одного из 10) запрос подщитывал количество совпадений предыдущих слов.
У меня есть определенная таблица с 2-х полей (ID, text). значения поля text очень часто повторяются так как это выборка одного из 10 слов ("один", "два", ...., "десять").
как мне построить зарос таким образом что при указании параметра (определенного слова - одного из 10) запрос подщитывал количество совпадений предыдущих слов.
Если я его себе правильно вывихнул, то автору надо вывести количество энтих самых слов, не совпадающих с параметром, но не общим чохом, а с группировкой.WildSery писал(а):Чуть моск не вывихнул, пытаясь понять логическую зависимость параметра "два" и результата "один - 1; десять - 2".
типа:
Код: Выделить всё
select count(text),text from table
where
text<>:InputPapam group by text
to "WildSery":
см. в таблицу: предполагаем что InputPapam = "два"
в даной таблице он встречается 3 раза с ID: 2, 5, 7
Мне нужно все что идет над этим параметром, тоесть ID: 1, 4, 6.
Дальше смотрим что идет под этим ID:
1 один
4 десять
6 десять
после производится групировка, сколько чего встречается. как видно "десять" встречается 2 раза, а "один" - 1 раз.
см. в таблицу: предполагаем что InputPapam = "два"
в даной таблице он встречается 3 раза с ID: 2, 5, 7
Мне нужно все что идет над этим параметром, тоесть ID: 1, 4, 6.
Дальше смотрим что идет под этим ID:
1 один
4 десять
6 десять
после производится групировка, сколько чего встречается. как видно "десять" встречается 2 раза, а "один" - 1 раз.
Сарказм неуместен.Unsiker писал(а):Чуть моск не вывихнул, пытаясь понять: JOIN табличку саму с собой по условию ID = ID-1, группировка с подсчётом. С етого места можно поподробнее
Я уверен, что многие меня поняли. А вот твоё условие действительно было запутанным. Тому, кто учиться не любит, готовое решение. Хотел как лучше.
Код: Выделить всё
select t2.text, count(1)
from table t1
join table t2 on t2.id = t1.id+1
where t1.text = :param
group by t2.text
Вот возьмет афтарррр, сделает ID c дырками и будет на весь мир обижен, что не работаетWildSery писал(а):Сарказм неуместен.
Я уверен, что многие меня поняли. А вот твоё условие действительно было запутанным. Тому, кто учиться не любит, готовое решение. Хотел как лучше.Код: Выделить всё
select t2.text, count(1) from table t1 join table t2 on t2.id = t1.id+1 where t1.text = :param group by t2.text
ты прав, это еще одна таблица, и нужна она именно для этого:Unsiker писал(а):Обьясните что в этом примере означаетит t2 и каково ее предначение.
___
я так понимаю это еще одна таблица?
http://ibase.ru/devinfo/joins.htm - ссылка вроде очевидней некуда
Может прочтешь? не будешь обижаться, что я тебе содержание по данному линку в этот топ не скопировал?
Какая задача, такое и решениеstix-s писал(а):Вот возьмет афтарррр, сделает ID c дырками и будет на весь мир обижен, что не работает
Ладно, пусть так. Наверное, он уже прочитал про JOIN. Теперь добавим нового синтаксиса.
Код: Выделить всё
select t2.text, count(1)
from table t2
join (select max(t1.id) id
from table t
join table t1 on t1.id < t.id
where t.text = :param
group by t.id) t3
on t2.id = t3.id
group by 1
мало, надо недельки 2 помаяться и доку НЕ ЧИТАТЬ!Unsiker писал(а): два часа убил на вот это:
создал таблицу: "Table2" (ID, text, count)
постоянная ошибка, запрос не выполняется
готов поспорить на съедение треуголки что он тут ваще ниче не читалWildSery писал(а): Ладно, пусть так. Наверное, он уже прочитал про JOIN.
Это камни, которые кидают в тех, кто не хочет на форуме помогать активно (ну я например)Attid писал(а): один\два и т.д. это банки с медом или отметки или еще чего ?