|
|
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
Стоит задача показать записи у которых поле field1 уникально, потом их отсортировать и наложить лимиты. Т.е. что-то типа такого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Мне такая конструкция сильно не нравится, но, что-то не могу придумать ничего адекватного С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 14:27:25 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
HAVING сам по себе ни в чем не провинился, а запрос я бы переписал так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. или так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Какой выйдет быстрее - зависит от фактических данных в таблице. В любом случае нужен индекс по полю field1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 14:38:22 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
miksoftВ любом случае нужен индекс по полю field1Это понятно. К сожалению, оно еще и строковое (номер телефона) miksoftзависит от фактических данных в таблице.Ожидается, что отбросится порядка 10% - 20% записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:21:48 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
miksoft, У меня еще мысль крутится, но как-то не могу ее сформулировать. Может завести еще одну таблицу только с этим полем, а из основной таблицы на нее ссылаться? Но тогда будет просадка при вставках. А INSERT у меня вызывается чаще, чем SELECT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:25:07 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Может завести еще одну таблицу только с этим полем, а из основной таблицы на нее ссылатьсяСильно зависит от предметной области и логики всей системы. Но судя по "отбросится порядка 10% - 20% записей" дублей в этом поле мало и я бы не стал так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:35:52 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
я тоже начал сомневаться в постановке задачи.... есть поле, может быть не уникально, но нам на който нужны записи где оно уникально....что за задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:51:44 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_miksoft, У меня еще мысль крутится, но как-то не могу ее сформулировать. Может завести еще одну таблицу только с этим полем, а из основной таблицы на нее ссылаться? Но тогда будет просадка при вставках. А INSERT у меня вызывается чаще, чем SELECT завести таблицу и в ней хранить айди, значение и щётчик...сколько счас ссылок есть на это дело. ну и тригерами замутить это дело(обновление, вставка, удаление) но опять же...что за задача!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:53:51 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
alex564657498765453.что за задача!?Парсится доска объявлений. Пользователю не нужно показывать объявления от агенств. Критерий агенства определил заказчик и сказал, что агенство - это два и более объявления с одним телефоном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 17:29:46 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
ааа ну тогда и решение совсем другое 1)парсим доску обьявлений сохраняем. в обьявление, и в таблицу телефонов аля Insert into telephones (id,phone,count) values (null,'123-45-67',0) on duplicate key update count = count+1,id= last_insert_id(id); получаем айдишник записи телефон, делаем вставку в таблицу обьявлений, указывая ссылку на телефон. и усё! это план минимум, план максимум, сделать в таблице обьявлений ещо одно поле - маркер агенства - по умолчанию 0 - не агенство. и тригер на обновление телефонов, если ставиться значение 1, то обновить таблицу обьявлений - все обьявы с сылкой на этот номер пометить маркером агенство. и не надо будет каждый раз перещёты делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 20:23:45 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
alex564657498765453тогда и решение совсем другоеВот и я где-то об этом думал. Но красиво сформулировать не мог. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 23:26:38 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
miksoft Код: sql 1. 2. а где условие на несовпадение ид? эдак оно вообще ничего не выдаст :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 04:58:20 |
|
||
|
Альтернатива HAVING
|
|||
|---|---|---|---|
|
#18+
tanglirmiksoft Код: sql 1. 2. а где условие на несовпадение ид? эдак оно вообще ничего не выдаст :)Да, виноват, надо добавить: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 12:06:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38797343&tid=1833971]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 412ms |

| 0 / 0 |
