|
|
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть две исходные таблицы a и b. Каждой записи из табл. a соответствуют все записи табл. b . Третья таблица c должна 'автоматом' заполнятся записями по факту инсерта или в a , или в b . Правило заполнения отразил в рисунке : (таблица с заполняется данными из a и b, и имеет поле c1, которое default = false) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Как ни расставлял FK, и не 'крутил' с джоинами - ничего не получилось. Вносил в табл.b fk a_id Ну и с инсертом в функции триггера так-же не сраслось. Почистил исходники, может кто поможет : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. Как правильно делать ? Чтобы и работало быстро, и на грабли потом не встать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 17:51:37 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong, Поправил, убрал лишний references : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В первой таблице a уникальным является значение двух полей UNIQUE (a1,a2). Это так мне надо для реальной задачи, которую упростил для примера, надеюсь нигде больше не 'накосячил'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 18:07:53 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong<> Третья таблица c должна 'автоматом' заполнятся записями по факту инсерта или в a , или в b . <> гм. обычное декартово произведение не устроит дона ? зачем дону третья та,бла? он собрался её индексировать по всем перестановкам полей ? :0) боюсь, обрезания декарта (полного произведения) условиями на основной массе выборок будут много быстрее такого недоразумения. и всяко - удобнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 19:57:54 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Alex_WongТретья таблица c должна 'автоматом' заполнятся записями по факту инсерта или в a , или в b .при изменении или удалении строк в таблицах a или b должно ли автоматически меняться содержимое таблицы c? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2014, 13:33:42 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, вот, например, табл. a -- это список персонала; уникальность по двум полям в ней -- чтобы хранить двух разных людей с одинаковыми фио; (исключаю случай, что попадутся для учета два разных человека с одинаковым фио и датой рождения) табл. b -- это список операций; в табл. с есть поле с1 (true/false) -- это раздача прав на операцию; вот на таком примере пытаюсь научиться и освоить 'материал'... По Вашему вопросу, - сам толком не знаю, у меня и с простым вариантом не клеится. Но для кругозора было бы интересно знать и структуру поддержки 'изменений' спасибо за участие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2014, 14:14:50 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, 'автоматически меняться содержимое таблицы c' возможно поможет on update cascade при соответствующей расстановке references; По смежной теме была от вас подсказка, что-то буду моделировать, когда с простым случаем разберусь. Интересует так-же хронология событий : 'чел' получил true на операцию (кто дал и когда) / потом получил false (кто дал и когда). Пока пытаюсь понять - увязать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2014, 14:33:23 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
йокарный бабай, Код: sql 1. Как без табл. с прикрутить поле с1 для каждой записи такого 'произведения' , чтобы потом с ним работать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2014, 15:10:32 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong'чел' получил true на операцию (кто дал и когда) / потом получил false (кто дал и когда)вам не нужна таблица с полным декартовым произведением и дефолтом false. наоборот, в таблице C храним только разрешенные комбинации (a_id, b_id). поле c1 отсутствует, строки добавляются "вручную", и удаляются тоже (равносильно операциям "получил true", "получил false"). логирование изменений (кто и когда) можно сделать триггером - на каждое действие добавляется строка в специальную лог-таблицу. логирования изменений данных в таблице тригером , и далее по ссылкам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2014, 17:27:41 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, да, спасибо, то что нужно. В своем варианте предполагал на клиенте в браузере показывать состояния прав по операциям для персонала. Поэтому и задумал 'такую' таблицу с , из которой мне было бы легко это вынимать. По предложенному Вами, у меня как-раз криво получается с таким запросом: - исходники; Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. - добавление "вручную" строк в табл. c; Код: sql 1. 2. - отображение на клиенте. Код: sql 1. 2. 3. Тогда для отображения 'состояния дел' по конкретному 'челу', например yyy , получаю : Код: sql 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. Здесь видно, что хоть и правильно показало допуск на op_3 , но запрос составлен не верно, т.к. не перебирает правильно комбинации -- нет [yyy -> op_1] = f ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 13:46:17 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 18:22:39 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, круто, спасибо. Тогда мой вариант отображения прав по клиенту : Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 19:09:56 |
|
||
|
Авто-заполнение таблицы из исходных двух.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong, да, и можно сократить: c_id is not null as c1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 21:48:24 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=129&tid=1998739]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
512ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 190ms |
| total: | 784ms |

| 0 / 0 |
