|
|
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы: В первой - люди и права доступа к объектам (у одного человека несколько прав) Во второй - объекты и права доступа, которые должен иметь человек, чтобы получить доступ к данному объекту. Надо получить таблицу людей и объектов, к которым они имеют доступ Как получить такую таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 17:11:05 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Че всем впадлу помочь начинающему? А как же братство программистов? Подскажите хоть какие-нибудь мысли! Мне сказали, что без курсоров не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 18:13:46 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Во-первых, по выходным народ отдыхает. Во-вторых - структуру таблиц и пример заполнения на бочку. В-третьих, начинать надо с чтения книг. 99%, что Ваш запрос select mans.man, objects.object from mans join objects on man.rights=objects.rights Что является первым примером по соединению таблиц в любом учебнике по SQL. В-четвертых, то что "в-третьих" может оказаться не тем, что надо. Тогда смотри "Во-вторых" Братство-братсвом, но и самому думать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 19:44:02 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Cat! Если это было так просто я бы постыдился спрашивать и открыл книгу! Это действительно можно прочитать в первых главах любой книженцы. Запрос немного сложнее! Пример: man1 имеет права 1,2,3,8,10, man2 имеет права 1,2,3,4,5 man3 имеет права 1,2,3,4,5,6,7,8 для доступа к объекту1 нужны права 3,4,5,6 для доступа к объекту2 нужны права 1,2,8 Так вот результат должен быть: man1 имеет доступ только к объекту2 man2 не имеет доступа ни к одному объекту man3 имеет доступ к обоим объектам то есть надо получить таблицу: man1 object2 man3 object1 man3 object2 Правда для тебя это наверняка легко. Я почитал твои сообщения - впечатлило, чувствуется рука мастера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 21:33:37 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
неужели права для man1 перечисляются через запятую? И почему только две таблицы, как я понял здесь их должно быть не меньше четырех. И все равно запрос получиться а-ля Cat2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 22:06:08 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Наверное я такой тупой, что даже не могу толково объяснить задачу. Таблиц действительно две. Первая таблица: man1 1 man1 2 man1 3 man1 8 man1 10 man2 1 man2 2 man2 3 man2 4 man2 5 man3 1 man3 2 man3 3 man3 4 man3 5 man2 6 man2 7 man2 8 Вторая таблица: Object1 3 Object1 4 Object1 5 Object1 6 Object2 1 Object2 2 Object2 8 Нужно получить: man1 object2 man3 object1 man3 object2 А теперь что скажете господа программисты! Тут связывание таблиц при помощи JOIN уже не прокатит. Я же говорю это не так просто как кажется! А пример CAT2 не подходит - это очевидно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 22:16:48 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Еще как "катит" ! Просто INNER JOIN-ов чуть побольше надо Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. PS А объяснять лучше все-таки как можно подробнее. Вы то свои таблицы "вживую" видите, а нам их еще вообразть надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 23:09:08 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Glory? Вот это уже больше похоже на правду! Наверно правильно, проверю - скажу. Спасибо за пример! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 23:26:36 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Забыл учточнить, что предложенный запрос будет работать правильно, если комбинации man_name - man_right и obj_name - obj_right являются уникальными в соотвествующих таблицах. Если это условие не выполняется, то надо чуть модифицировать запрос Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 10:26:04 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
2 Glory. Еще раз СПА! А сколько нужно времени среднему программисту, чтобы написать такой запрос. (секунд 10?). К примеру сколько Вы над ним думали, или написали "сходу"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 11:01:29 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
2alexu Начинающему - подумать 10 сек + написать Среднему - подумать 0 сек + написать Хорошему - 0 сек (поручить начинающему) :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 11:45:40 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 12:20:09 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
2alexu После того, как вы привели последний вариант, никаких сомнениий не возникло - количество прав у пользователя должно строго равняться количеству прав у объекта. Ну а написание скрипта взяло конечно больше 10 секунд - все-таки на курсы печатания вслепую я не ходил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:53:47 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
А некоторые справляются за 0 сек. Когда-нить и я буду по этой части спецом. БОЙТЕСЬ!!! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 17:11:53 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Что-то какая-то куцая система прав доступа получается... Выходит, что ежели объект Obj1 в своем описании полей содержит право, к примеру, № 8, то это право имеют все юзеры, в свойствах которых сие право прописано? А если объект Obj2 содержит точно такое же право (№ 8)? Выходит, мы можем дать только схожие права доступа к разным объектам! Не можем одному юзеру дать право №8 на объект Obj1, одновременно запретив иметь его для объекта Obj2, если на объект Obj2 имеет право №8 какой-то другой пользователь... ИМХО, должно быть не две таблицы, а три. В одной - юзеры, в другой - объекты. В третьей - на пересечении двух первых - (отношение "многие-ко-многим") - права доступа. В такой системе можно будет давать разные права доступа разным юзерам на один объект, и одному юзеру иметь разные права доступа к разным объектам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 19:41:04 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
2 Garya. Согласен система куцая, если ее применять к данной области (юзеры, права, объекты). Но мне нужно было знать как составить такой запрос. Пример чисто теоретический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 20:04:11 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Наконец-то я весьма запоздало собрался ответить Мне конечно далеко до Glory в соревновании на сборку-разборку запросов с завязанными глазами, я больше архитектурой интересуюсь. Структура базы мне сразу не понравилась. Если мы преобразуем права в побитовые маски, то задача решается в два притопа, три прихлопа. Правда, это конкретное решение будет работать, если число прав in (1-32). Преодолеть это ограничение можно, но возни несколько больше. Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 20:16:00 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Полностью согласен с Garyaй и Котом2! Надуманная структура! В идеале tabUsers, TabObjects, TabRights. Все стройно и гладко, а главное для всех понятно. Не мудрено что при недостатке условий даже Кот2 запутался. PS Все гениальное просто. ЗЫ Нашли среднего программиста (G) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2002, 07:47:53 |
|
||
|
Помогите сформировать запрос
|
|||
|---|---|---|---|
|
#18+
Ну вот, Garya все расставил по полочкам. Я в эту проблему не вникал. Кто-то из великих авиоконструкторов, кажется Туполев, говорил: "Некрасивая машина не может летать". Я со своей стороны добавлю: "Некрасивая база не будет работать". Который раз убеждаюсь, что всякие хитрозадые запросы нужны в неверно спроектированных базах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2002, 19:53:07 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32059427&tid=1819476]: |
0ms |
get settings: |
5ms |
get forum list: |
21ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 287ms |

| 0 / 0 |
