Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать SQL запрос, Выделить не больше 5 с уникальным значен 
:(
    Опции темы
neoks
Дата 27.6.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите составить запрос, мне нужно выделить строки не больше с 5 уникальными значениями.
Есть таблица

Код

pages
-------------------
url           | cid  | key
-------------------
/pages/2 | 4    | ......
/pages/3 | 4    | ......
/pages/5 | 6    | ......


И таблица

Код

sites
-------------------
id| name      | ......
-------------------
4 | test.ru    | ......
6 | test.ru    | ......
8 | test.ru    | ......


Мне нужно выделить строки из таблицы pages  и как бы так объяснить, чтоб ячейка cid была уникальна то-есть не больше 5 повторявшийся значений
Скажем я выделил строки например только с одним повторявшимся значением в результате получу строки
Код

/pages/2 | 4
/pages/5 | 6

Теперь например с 2 повторявшимся значениями
Код

/pages/2 | 4
/pages/3 | 4
/pages/5 | 6


Какой запрос нужно сделать чтоб получить такой результат, например пробовал такой
Код

SELECT * 
FROM  `pages` 
GROUP BY cid > 2

Как сделать чтоб GROUP был и выдавал больше 1-го повторявшийся значения ?
PM MAIL   Вверх
AndreyIQ
Дата 27.6.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если я правильно понял:
Код

SELECT * 
FROM  `pages` 
WHERE (SELECT count(*) from `pages` as p where p.cid = pages.cid)<5

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


Опытный
**


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

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



Очень, очень, очень медленно что я даже не дождался результата с лимитом 30 ))
PM MAIL   Вверх
teroni
  Дата 27.6.2012, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 8
Всего: 22



Я бы не насиловал мозг, в запросе брал бы все записи, а в php счетчиком выкидывал ненужные. 
PM MAIL   Вверх
Aliance
Дата 27.6.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



having, не?
PM MAIL WWW ICQ Skype   Вверх
neoks
Дата 27.6.2012, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну я сначала так и делал, тупо откидывал если больше 5, но это не быстрый результат пришлось делать крон ) после чего когда многие одновременно начинали закупаться то база начинала уходить чуть ли не в накаут )) теперь обдумываю как это дело оптимизировать и сделать быстрее без крона
PM MAIL   Вверх
neoks
Дата 27.6.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не могу вникнуть в этот having
Вот запрос
Код

SELECT * 
FROM  `pages` 
GROUP BY сid
HAVING COUNT( id ) >5
ORDER BY сid
LIMIT 30


Всеравно cid повторяется тока один раз, а нужно как минимум несколько раз, может неправильно написал запрос ?
PM MAIL   Вверх
AndreyIQ
Дата 27.6.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(neoks @  27.6.2012,  13:11 Найти цитируемый пост)
Очень, очень, очень медленно что я даже не дождался результата с лимитом 30 )) 

У Вас индекс по cid есть?


Цитата(neoks @  27.6.2012,  15:14 Найти цитируемый пост)
Не могу вникнуть в этот having
Вот запрос
код SQL
1:
2:
3:
4:
5:
6:
SELECT * 
FROM  `pages` 
GROUP BY сid
HAVING COUNT( id ) >5
ORDER BY сid
LIMIT 30


Всеравно cid повторяется тока один раз, а нужно как минимум несколько раз, может неправильно написал запрос ? 

Наверно все таки 
Код

HAVING COUNT( cid ) <5

И все равно выдаст по одной записи
PM MAIL   Вверх
neoks
Дата 27.6.2012, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AndreyIQ @  27.6.2012,  15:49 Найти цитируемый пост)
У Вас индекс по cid есть?

Стока раз читал, смотрел и все равно не могу понять что такое индекс ? ))

Цитата(AndreyIQ @  27.6.2012,  15:49 Найти цитируемый пост)
И все равно выдаст по одной записи

Так и есть, все равно по одной )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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