|
|
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Ребята, помогите плиз! Помираю от ощущения нерешенной задачи :) В принципе, могу воспользоваться MySQL, поэтому извините за репостинг собственного вопроса из другого раздела. Показать записи где числа в N-ом количестве столбцов из 10 столбцов совпадают В SQL zero и все упирается в грамотно составленный query. Можно программированием и циклами обойтись, но хотелось приобщиться к прекрасному миру БД. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:14:20 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
СУБД у вас какая? И что такое "SQL zero" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:17:29 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02все упирается в грамотно составленный query. Нет, всё упирается в безграмотно построенную структуру. Если сравнение полей записи имеет смысл, то эти поля содержат однотипный атрибут записи. То есть структура денормализована. Нормализуй - и запрос станет элементарным, если не сказать тривиальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:20:38 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
miksoft,Имел в виду, что я - практически ноль пока в SQL. На борту есть SQLite и MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:21:46 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02, unpivot -> join -> pivot ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:23:05 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Akinatmp_02все упирается в грамотно составленный query. Нет, всё упирается в безграмотно построенную структуру. Если сравнение полей записи имеет смысл, то эти поля содержат однотипный атрибут записи. То есть структура денормализована. Нормализуй - и запрос станет элементарным, если не сказать тривиальным. Дык вроде даже, если и отсортировать данные построчно, как-то у меня все равно не склеивается условия выборки 3(2,1) из 4-х. Нуб :( Добрый Э - Эхunpivot -> join -> pivot Спасибо! Покурю эту штуку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:28:07 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
В MySQL можно немного схитрить: Код: sql 1. Так будут выбраны те записи, где у поля id ровно три совпадения с другими полями. Но, похоже, это только часть задачи. А целиком я ее не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:28:45 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
miksoftВ MySQL можно немного схитрить: Код: sql 1. Но, похоже, это только часть задачи. А целиком я ее не понял. Спасибо! Осмысливаю. А вообще задача геометрическая. 4 числа - номера вершин пирамидок, которые прилегают к друг другу. Соответственно у каждой может быть 4 соседа. Но есть случаи, когда соседей может быть меньше. Для всех ID надо такое соседство отследить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:34:52 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
[quot miksoft]В MySQL можно немного схитрить: Код: sql 1. Под p1-p4 увы, подразумеваются не ID этой же таблицы, поэтому такая конструкция не работает. Надо было мне сразу физический смысл описать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:52:15 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02miksoftВ MySQL можно немного схитрить: Код: sql 1. Под p1-p4 увы, подразумеваются не ID этой же таблицы, поэтому такая конструкция не работает. Надо было мне сразу физический смысл описать.Тогда описывайте задачу целиком, а не в стиле "Для каждого ID надо найти такие соответствующие ID". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:54:20 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02, ну все правильно. делаешь посредством unpivot или его аналогов (ввиду отсутствия UNPIVOT-а в MySQL / SQLite) нормализацию. Джойнишь результат денормализации самого на себя, в поисках соседствующих пирамидок, далее посредством pivot-а или его аналогов (в виду отсутствия PIVOT-а в MySQL / SQLite) вновь денормализовываешь данные к нужному виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:55:07 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02Akinaпропущено... Нет, всё упирается в безграмотно построенную структуру. Если сравнение полей записи имеет смысл, то эти поля содержат однотипный атрибут записи. То есть структура денормализована. Нормализуй - и запрос станет элементарным, если не сказать тривиальным. Дык вроде даже, если и отсортировать данные построчно, как-то у меня все равно не склеивается условия выборки 3(2,1) из 4-х. Нуб :( Добрый Э - Эхunpivot -> join -> pivot Спасибо! Покурю эту штуку. проблема в том, что нет их в mySQL... а так - кури... тебе про структуры уже все сказали - это самый правильный ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:55:34 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхtmp_02, ну все правильно. делаешь посредством unpivot или его аналогов (ввиду отсутствия UNPIVOT-а в MySQL / SQLite) нормализацию. Джойнишь результат де нормализации самого на себя, в поисках соседствующих пирамидок, далее посредством pivot-а или его аналогов (в виду отсутствия PIVOT-а в MySQL / SQLite) вновь денормализовываешь данные к нужному виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:56:21 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Ох ты ж! Как все сложно-то. Загрузили :( Чую не вытянут мои мозги всей инфы и придется вложенными циклами и программингом обходиться. А так надеялся на чудо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:00:47 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02задача геометрическая. 4 числа - номера вершин пирамидок, которые прилегают к друг другу. Соответственно у каждой может быть 4 соседа. По-моему, три соседа - себя считать как бы моветон. А то начнёшь углы в комнате считать, посчитаешь себя. получишь пять углов... Сделал бы по-нормальному (ID вершины - ID пирамидки) - и получился бы у тебя простейший запрос. А так придётся или вручную распивочивать, или устраивать суммирование сравнений "каждый с каждым". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:04:24 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
AkinaСделал бы по-нормальному (ID вершины - ID пирамидки) - и получился бы у тебя простейший запрос. Увы, мне надо отследить прилегание гранями каждой пирамидки с соседями. Поэтому нужна выборка по три. А так, к одной вершине может больше, чем три пирамиды прилегать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:10:23 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02, универсальное решение этой задачи для любой SQL субд такое: 1) создаете 3 новые строковые колонки m1, m2, m3 2) программным способом заполняете эти колонки для каждого ряда на основе следующего алгоритма Код: javascript 1. 2. 3. 4. 5. 3) итоговый запрос для решения вашей задачи выглядит вот так Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:27:45 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Lumix,Спасибо! Буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:46:05 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02мне надо отследить прилегание гранями каждой пирамидки с соседями. Элементарно. Код: sql 1. 2. Для полной вершины n=4, для неполной соответственно меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:51:03 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
AkinaЭлементарно. Я тоже думал, что для СУБД это плевое дело. Попробую добавить немного графики , если поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 15:48:17 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Lumix , таблицу сгенерил , но запрос споткнулся об Unknown column 'a.ID' in 'where clause' И это вроде не то, что требуется. Эх, видать от доооолгих циклов мне не уйти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:34:27 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZivпроблема в том, что нет их в mySQL... а так - кури... тебе про структуры уже все сказали - это самый правильный ответ. замена несуществующих фич на общепринятые аналоги: 1) unpivot - cross join на табличку с нужным кол-вом строк (в данном случае - четыре строки достаточно) 2) pivot - множественный case when в селект листе с последующей группировкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:39:56 |
|
||
|
Помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
tmp_02 Lumix , таблицу сгенерил , Чтобы подобные запросы выполнялись мгновенно, таблица должна быть с индексами. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 20:44:17 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=120&tid=1832535]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 312ms |

| 0 / 0 |
