Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с запросом 
:(
    Опции темы
DooZ
Дата 27.5.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



есть таблица с картинками

id - уникальный номер
url - урл страницы где эта картинка
thumb - урл картинки
shows - кол-во показов
clicks - кол-во кликов

пример:

1
http://domain.com/index.html
http://domain.com/1.jpg
0
0

2
http://domain.com/index.html
http://domain.com/2.jpg
0
0

3
http://domain.com/index.html
http://domain.com/3.jpg
0
0

4
http://domain1.com/index.html
http://domain1.com/1.jpg
0
0

5
http://domain2.com/index.html
http://domain2.com/1.jpg
0
0

6
http://domain2.com/index.html
http://domain2.com/2.jpg
0
0

т.е. как видите картинки уникальны, а вот урлы нет
т.е. у одного урла может быть несколько картинок

запрос:
SELECT id FROM images GROUP BY url ORDER BY shows/(clicks+1)
возвращает только первые три уникальные картинки с разных хостов (оно и понятно, т.к. групируется и все тут)
как написать запрос что бы возвращались уникальные картинки (1 картинка от 1-го хоста за один раз), но(!) с учетом order by ?

заранее спасибо
PM MAIL   Вверх
v2v
Дата 27.5.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



не понял что тебе надо.. покажи на примере что должно вернуться smile


--------------------
PM   Вверх
DooZ
Дата 27.5.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



забыл добавить что после выборки делается
update images set shows=shows+1 where id=текущий_id (выборка в цикле)

так вот щас он выводит что-то типа:

1
4
5
увеличивает у каждого этого id счетчик shows +1 и все равно выводит 1 4 5

а надо что бы потом выводил например:
2 4 6
потом например:
3 4 5
потом
1 4 6
ну и т.д.

теперь понятно?
PM MAIL   Вверх
skyboy
Дата 27.5.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(DooZ @  27.5.2008,  18:36 Найти цитируемый пост)
теперь понятно? 

непонятно.
если тебе надо уникальные картинки, а id - как раз уникальное поле, а id - в каждой записи вообще уникальное(первичный ключ, я прав?), то тебе группировка набок не нужна.
просто :
Код

SELECT id, shows/(clicks+1)
FROM images 
ORDER BY 2

PM MAIL   Вверх
DooZ
Дата 27.5.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



еще раз повторяю
мне надо выбрать из базы
УНИКАЛЬНЫЕ КАРТИНКИ а не ИД

есть много одинаковых УРЛ, у каждого урл может быть от ОДНОЙ до НЕСКОЛЬКИХ картинок
НО(!!!) выбрать надо ОДНУ УНИКАЛЬНУЮ КАРТИНКУ для каждого урла!

т.е. будет в базе 100 урл, у каждого урла по 10 картинок (итого 1000 записей)
надо выбрать 100 ИД (тоесть 100 картинок, 1 картинка = 1 урл)

так понятно?
PM MAIL   Вверх
v2v
Дата 27.5.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



то что ты описываешь соответствует твоему первому запросу, который ты сказал что не правилен.
объясняйся чётче...


--------------------
PM   Вверх
DooZ
Дата 27.5.2008, 21:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



елки палки куда четче???
внесите в базу то что я дал и поймете о чем я


SELECT id FROM images GROUP BY url ORDER BY shows/(clicks+1)
да этот запрос возвращает три картинки
в данном случае:
1 4 5
потом у каждой увеличивает shows + 1
и при следующем запросе должен вернуть уже:
2 4 6
а возвращает ВСЕ РАВНО(!!!) 1 4 5

теперь понятно????
помоему яснее уже некуда

Добавлено через 1 минуту и 40 секунд
для ленивых вот запросы:
SELECT id FROM images GROUP BY url ORDER BY shows/(clicks+1)
-> 1, 4, 5
UPDATE images SET shows=shows+1 WHERE id=1
UPDATE images SET shows=shows+1 WHERE id=4
UPDATE images SET shows=shows+1 WHERE id=5

SELECT id FROM images GROUP BY url ORDER BY shows/(clicks+1)
-> 1,4,5 (а должно быть что-то вроде: 2,4,6)

вот
PM MAIL   Вверх
v2v
Дата 27.5.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



smile  smile  smile

Добавлено через 34 секунды
запрос у тебя возвращает ID , а ты изменяешь поле SHOWS ))


--------------------
PM   Вверх
DooZ
Дата 27.5.2008, 21:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



ты видимо издиваешься или не внимательно читал посты?

SELECT id FROM images GROUP BY url ORDER BY shows/(clicks+1)
я выбираю значиния исходя (сортируя) ПО shows/(click+1)

выбираться должна та картинка которая меньше всего была показана!
PM MAIL   Вверх
skyboy
Дата 27.5.2008, 21:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



странно.
если тебе надо уникальные картинки, а id никакого отношения к картинкам не имеет, то что для каждой картинки уникально? thumbs? если да, то почему группируешь по url, когда для картинки уникально только thumbs? если нет, то как вообще на такой структуре определяется отдельная уникальная картинка?
Цитата(DooZ @  27.5.2008,  20:25 Найти цитируемый пост)
елки палки куда четче???

туда. туда четче.
вместо истерик лучше бы внятно объяснил, что у тебя есть и что тебе надобно.
если держишь нас за идиотов, зачем вопросы задаешь?
PM MAIL   Вверх
Fortop
Дата 27.5.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Цитата(DooZ @  27.5.2008,  20:38 Найти цитируемый пост)
т.е. будет в базе 100 урл, у каждого урла по 10 картинок (итого 1000 записей)
надо выбрать 100 ИД (тоесть 100 картинок, 1 картинка = 1 урл)

так понятно? 

Ничерта не понятно smile По какому критерию ты собираешься выбрать 1 из 10 картинок для одного и того же урл?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
v2v
Дата 27.5.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



не дели на кликс + 1


--------------------
PM   Вверх
Fortop
Дата 27.5.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Цитата(DooZ @  27.5.2008,  19:26 Найти цитируемый пост)
как написать запрос что бы возвращались уникальные картинки (1 картинка от 1-го хоста за один раз), но(!) с учетом order by ?

Если я правильно помню, то никак.
Поскольку в подзапросах ORDER BY не работает.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
DooZ
Дата 27.5.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



я никого не держу за идиотов, я помоему достаточно внятно объяснил уже несколько раз
что нужно выбрать из базы ИД картинок
одна картинка = один урл
у одного урл может быть сотня картинок
но надо выбрать только одну отсортированную по показам (order by shows)

попробую еще раз
в базе нет уникальных элементов как таковых
есть совокупность этих самых элементов

урл, у этой урл есть картинки, у каждой картинки есть кол-во показов

надо просто выбрать ИД этих картинок, НО так что бы не было совпадающих УРЛ

т.е. одна картинка один урл

пример:
урл1 = (ид1 -> картинка1 - 0 показов, ид2 ->картинка2 - 0 показов, ид3 ->картинка3 - 0 показов)
урл2 = (ид4 ->картинка4 - 0 показов, ид5 ->картинка5 - 0 показов, ид6 ->картинка6 - 0 показов)
урл3 = (ид7 ->картинка7 - 0 показов, ид8 ->картинка8 - 0 показов, ид9 ->картинка9 - 0 показов)

в первый раз делаем выборку:
должно выдать что-то типа: ид1, ид4, ид7
далее делаем увеличение показов:
ид1 -> показы + 1
ид4 -> показы + 1
ид7 -> показы + 1

далее опять делаем выборку
и должно выдать что-то типа (вот тут внимание)
ид2, ид5, ид8
далее делаем увеличение показов:
ид2 -> показы + 1
ид5 -> показы + 1
ид8 -> показы + 1

и опять делаем выборку:
должно выдать:
ид3, ид6, ид9
опять увеличиваем показы этих ИД
ид3 -> показы + 1
ид6 -> показы + 1
ид9 -> показы + 1

и все по кругу должно выдавать
т.е. опять ид1, ид4, ид7

и т .д.

теперь понятно?
PM MAIL   Вверх
Fortop
Дата 27.5.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Хотя можно попробовать реализовать что-то вроде

Код

SELECT id FROM images WHERE
shows IN (SELECT MAX(shows) FROM images GROUP BY url)




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1326 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.