|
|
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
На картинке сетка 10х10=100 кубиков. Создана БД, 100 строк, поля: id,x,y,s. Одна строка = один кубик. x,y - координаты левого верхнего угла кубика. Таким образом перечислены ВСЕ кубики, т.е.: В БД хранятся закрашенные области (серый цвет), как несколько строк, у которых поле s=1. координаты левого верхнего угла, т.е. ДВА числа (х,у). Запросом в БД хочу получить список кубиков данной сетки (они же кубики 1х1, они же строки), которые удовлетворяют условию 1. если под свободным кубиком есть свободный кубик, то я беру оба кубика (т.е. нужны координаты этих обоих кубиков). 2. если свободный кубик имеет справа свободный и под собой свободный и вправо и вниз свободный (т.е. в результате образуется КУБ 2х2), то беру все 4 кубика. 3. Ну и прямоугольники тоже нужны. Т.е. в итоге для данного рисунка я должен получить: по 1 условию - id=3,13; id=7,17; id=8,18; id=10,20 и тд. По сути нужен первый результат, дальше отбросить можно. по 2 условию - id=7,8,17,18; следующий куб 2х2 где-то в центре сетки будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 20:57 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
Да тупо в лоб "математизируешь" свои словеса с учётом требований SQL-синтаксиса... по первому пункту получится Код: sql 1. 2. 3. 4. 5. 6. По второму пункту потребуется, сабо самой, 4 копии таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 21:10 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
хм.. а я чо-то полез вот в эти дебри, искать через id+10, т.е. это id нижележащего кубика...: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 21:59 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
ой, s=0 конечно же!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 22:00 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
Akina, немного с ошибкой ищет... скрин приложил серое - то что s=1 оранжевое - то , что выдает запрос, кое-где под серыми областями белые зоны по идее должны быть оранжевыми, ниже ведь есть свободные кубики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 22:10 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
Ну тогда в студию (и под спойлер... и проверить...) скрипты создания и наполнения, а также эталонный ответ. Не самим же нам всё это для тебя создавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 22:36 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
DROP TABLE IF EXISTS `all_items_10x10`; CREATE TABLE `all_items_10x10` ( `id` int(11) NOT NULL, `x` smallint(4) NOT NULL, `y` smallint(4) NOT NULL, `s` tinyint(1) NOT NULL, `order_id` int(11) NOT NULL COMMENT 'uniq id from new order' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED; INSERT INTO `all_items_10x10` (`id`, `x`, `y`, `s`, `order_id`) VALUES (1, 0, 0, 0, 0), (2, 1, 0, 0, 0), (3, 2, 0, 0, 0), (4, 3, 0, 1, 111111), (5, 4, 0, 1, 111111), (6, 5, 0, 1, 111111), (7, 6, 0, 0, 0), (8, 7, 0, 0, 0), (9, 8, 0, 1, 222222), (10, 9, 0, 0, 0), (11, 0, 1, 1, 333333), (12, 1, 1, 1, 333333), (13, 2, 1, 0, 0), (14, 3, 1, 1, 111111), (15, 4, 1, 1, 111111), (16, 5, 1, 1, 111111), (17, 6, 1, 0, 0), (18, 7, 1, 0, 0), (19, 8, 1, 1, 222222), (20, 9, 1, 0, 0), (21, 0, 2, 0, 0), (22, 1, 2, 0, 0), (23, 2, 2, 0, 0), (24, 3, 2, 1, 111111), (25, 4, 2, 1, 111111), (26, 5, 2, 1, 111111), (27, 6, 2, 0, 0), (28, 7, 2, 0, 0), (29, 8, 2, 0, 0), (30, 9, 2, 0, 0), (31, 0, 3, 1, 444444), (32, 1, 3, 1, 444444), (33, 2, 3, 0, 0), (34, 3, 3, 1, 111111), (35, 4, 3, 1, 111111), (36, 5, 3, 1, 111111), (37, 6, 3, 0, 0), (38, 7, 3, 1, 555555), (39, 8, 3, 1, 555555), (40, 9, 3, 0, 0), (41, 0, 4, 1, 444444), (42, 1, 4, 1, 444444), (43, 2, 4, 0, 0), (44, 3, 4, 0, 0), (45, 4, 4, 0, 0), (46, 5, 4, 0, 0), (47, 6, 4, 0, 0), (48, 7, 4, 1, 555555), (49, 8, 4, 1, 555555), (50, 9, 4, 0, 0), (51, 0, 5, 0, 0), (52, 1, 5, 0, 0), (53, 2, 5, 0, 0), (54, 3, 5, 0, 0), (55, 4, 5, 0, 0), (56, 5, 5, 0, 0), (57, 6, 5, 0, 0), (58, 7, 5, 1, 555555), (59, 8, 5, 1, 555555), (60, 9, 5, 0, 0), (61, 0, 6, 0, 0), (62, 1, 6, 1, 666666), (63, 2, 6, 1, 666666), (64, 3, 6, 1, 666666), (65, 4, 6, 1, 666666), (66, 5, 6, 1, 666666), (67, 6, 6, 0, 0), (68, 7, 6, 1, 555555), (69, 8, 6, 1, 555555), (70, 9, 6, 0, 0), (71, 0, 7, 0, 0), (72, 1, 7, 0, 0), (73, 2, 7, 0, 0), (74, 3, 7, 0, 0), (75, 4, 7, 0, 0), (76, 5, 7, 0, 0), (77, 6, 7, 0, 0), (78, 7, 7, 0, 0), (79, 8, 7, 0, 0), (80, 9, 7, 0, 0), (81, 0, 8, 0, 0), (82, 1, 8, 1, 777777), (83, 2, 8, 0, 0), (84, 3, 8, 0, 0), (85, 4, 8, 0, 0), (86, 5, 8, 0, 0), (87, 6, 8, 0, 0), (88, 7, 8, 0, 0), (89, 8, 8, 0, 0), (90, 9, 8, 0, 0), (91, 0, 9, 0, 0), (92, 1, 9, 1, 777777), (93, 2, 9, 0, 0), (94, 3, 9, 0, 0), (95, 4, 9, 0, 0), (96, 5, 9, 0, 0), (97, 6, 9, 0, 0), (98, 7, 9, 0, 0), (99, 8, 9, 0, 0), (100, 9, 9, 0, 0); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 22:44 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
запрос: select t1.*, t2.* from all_items_10x10 t1, all_items_10x10 t2 where t1.x=t2.x and t1.y=t2.y-1 and t1.s=0 and t2.s=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 22:46 |
|
||
|
Как проапдейтить свободные ячейки по условию, ячейки в сетке 10х10
|
|||
|---|---|---|---|
|
#18+
Олег Котейкин , на ТВОИХ данных 19725975 запустил ТВОЙ запрос 19725978 . Полученный результат АБСОЛЮТНО правильный - ровно 44 записи, ни одной пропущенной, ни одной ошибочной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 23:07 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39318213&tid=1831372]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 482ms |

| 0 / 0 |
