|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
У меня в базе данных аптеки есть 4 таблицы: продукт (id продукта, имя и т.д) продукт_заболевание - таблица для связи много ко многим, в ней id продукта, id заболевания заболевания - (id заболевания, имя, его категория) категории заболеваний - (id категории, имя) Таблицы связаны между собой (во вложении показано как). Я пытаюсь реализовать фильтрацию и выбрать из таблицы имя того продукта, категория заболевания которого равна какому-либо значению, например "Тест". Собственно, вопрос: как построить такой запрос? Прбовал так: Код: sql 1.
Но получаю просто названия всех продуктов в таблице. Также прикладываю дамп бд с этими таблицами: Код: 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. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 19:06 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
TomYoll Прбовал так: Код: sql 1.
Но получаю просто названия всех продуктов в таблице. Во-первых, какой результат вы надеялись получить, если у вас отношения между продуктами и заболеваниями хранятся в таблице diseases_product, а выборку вы делаете из products и diseases_category. Во-вторых, у вас отсутствует таблица связей между категориями и болезнями или категориями и продуктами. Т.е. непонятно, какое заболевание в какой категории находится или какая категория относится к какому продукту. По той структуре, которая у вас сейчас в наличии, можно выбрать продукты, которые относятся к конкретному заболеванию. А вообще имеет смысл отталкиваться от задачи и переделать БД, пока ещё идёт стадия прототипа. А то не дай бог это не учебный проект. Тем более на такую тематику. Я бы в такой аптеке не рискнул закупаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 19:29 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
Gluck99 Во-вторых, у вас отсутствует таблица связей между категориями и болезнями или категориями и продуктами. Т.е. непонятно, какое заболевание в какой категории находится или какая категория относится к какому продукту. добавил таблицу связей между заболеванием и категорией, таблица категорий теперь просто category, а свзязанная таблица теперь category_product. Gluck99 А вообще имеет смысл отталкиваться от задачи и переделать БД, пока ещё идёт стадия прототипа. А то не дай бог это не учебный проект. Тем более на такую тематику. Я бы в такой аптеке не рискнул закупаться. Это всё же учёбная база данных, так-что волноваться не о чём (наверное). А БД эту я переделывал уже не раз, это пока лучший вариант т.к в sql я новичок (думаю, это заметно). Дамп Код: 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. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 19:59 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
TomYoll добавил таблицу связей между заболеванием и категорией, таблица категорий теперь просто category, а свзязанная таблица теперь category_product. TomYoll в sql я новичок (думаю, это заметно). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 23:09 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
Gluck99 Т.е. какое-то конкретное заболевание может входить одновременно в несколько категорий? Если всё-таки нет, и каждое заболевание может быть отнесено только к какой-то одной категории, то у вас ошибка. Только к одной категории, в чём тут ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 23:19 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
TomYoll Только к одной категории, в чём тут ошибка? Если заболевание может находиться только в одной категории, в чём смысл связующей таблицы diseases_category? У нас есть таблица категорий заболеваний с ID категории. Есть таблица заболеваний, у каждого заболевания свой ID, а также CategoryID. Далее таблица с продуктами и таблица связи заболеваний и продуктов. Итого 4 таблицы. Нужно еще добавить таблицу со справочником производителей. Хранить наименование производителя в текстовом поле - это жуткий моветон. Прошу обратить внимание на нейминг (наименование полей), нейминг должен быть однозначным и производиться по единым правилам для всей базы. Структура БД Код: 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.
Теперь можно приступать к решению основной задачи с выборкой данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 01:12 |
|
Фильтрация данных при связи много к многим
|
|||
---|---|---|---|
#18+
Gluck99, спасибо большое за помощь, взял предоставленные вами таблицы, связал их и использовал такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Всё работает, ещё раз спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2021, 13:49 |
|
|
start [/forum/topic.php?fid=47&fpage=9&tid=1828085]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 407ms |
0 / 0 |