|
|
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
Может быть кто подскажет. Столкнулся с проблемой, еще ни разу такую выборку не делал хотелось бы понять как ее сделать. Решил попробовать сделать что то вроде каталога авто и сейчас разрабатываю базу данных. По просмотру различных каталогов (по просмотру внешне) начал создавать цепочку связей для более гибкого хранения данных. На данном этапе получилась связка из 4-х таблиц, в первую таблицу записываю бренд с его url ПС. первое поле у всех таблиц уникально. catalogs cid | brand | url Пример: 1 | Rover | rover Теперь к бренду нужно добавить модельный ряд ragne rid | catalog | model Пример 1 | 1 | 25 2 | 1 | 75 3 | 1 | 45 4 | 1 | MG 5 | 1 | Mini MK Т.е. при условии что url = rover (where url = 'rover') Нужно выбрать всю подноготную из этих двух таблиц в виде многомерного массива Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Но это еще не все, нужно расширить информацию добавив еще две таблицы По мимо модели, нужно выбрать еще и модификации данной модели По этому создал еще одну таблицу со всеми модификациями modification mid | mrid | modific_name Пример: 1 | 1 | 25 2 | 1 | 25 (RF) Т.е. совмещаем range.rid = modification.mrid Ну и уже расширяем многомерный массив и приводим его в виде Код: php 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. Теперь у каждой модификации есть ряд двигателей, которые так же нужно выдернуть из базу Создал еще одну таблицу modification_group mgid | mgmid | modific_group Пример 1 | 1 | 1.4 V16 (103Hp) 2 | 1 | 1.6 V16 (109Hp) 3 | 1 | 1.8 V16 (145Hp) И к каждой модификации нужно выбрать все данные с этой таблицы modification_group.mgmid = modification.mid И получить уже многомерный массив такого плана Код: php 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. Вобщем от этого у меня голова разболелась Даже и не знаю как быть, может кто нибудь подсобит запросом для получения всех данных из таблиц. Уже думал может сделать 3-4 запроса и делать выборку по таблично, но думаю это будет не совсем правильно, а может быть есть и какие то другие варианты, даже может быть структуру как то переделать чтобы не загоняться с такими запросами? Марок и модификаций очень много и с моей точки зрения такая структура таблиц будет более гибкой в использовании, хотя может и ошибаюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 04:34:36 |
|
||
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
webphp , прежде всего - SQL не работает с массивами ! Массивы, в вашем изложении, предполагают: 1. индексацию элементов В рамках реляционной модели к таблице нельзя обращаться не только по номеру строки (ну нет такого понятия, по определению), но и по номеру столбца (так сказать, 0НФ). 2. сложную структуру элементов массива А это уже прямое нарушение 1НФ Посмотрите на эту тему бесплатный вебинар от specialist.ru Теперь по сути вопроса. Все, что вам нужно, - это обычный запрос к четырем таблицам, типа этого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ВСЁ! Осталось навести легкий марафет: убрать, например, из выборки дублируемые поля-связи (например, r.catalog, m.mrid), обеспечить наличие необходимых индексов для ускорения выполнения выборки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 08:37:16 |
|
||
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
webphp, Структура правильная пока. Про массивы забудь, тебе надо видимо SQL подучить. Здесь тебя учить бессмысленно, тебе надо читать книги. Голова болит - странно, в сколько нибудь стоящей бд обычно порядка 100 таблиц, если у тебя уже с четырех голова болит, то что будет дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 09:57:32 |
|
||
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
ну собственно я и сделать что то вроде того Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Cygapb-007, я с mysql просто не ахти, все потихонечку набираюсь опыта, пытаюсь делать все более сложные выборки, просто думал что можно как то более гибко сделать выборку, а не свалить все в кучу, вот и ломал вчера голову над этим вопросом =) MasterZivЗдесь тебя учить бессмысленно, тебе надо читать книги Спасибо, но лучше вместо книг, буду практиковаться, теория конечно важна, но когда сам помучаешься, запомнишь на всегда, для меня просто теорию лучше постепенно подхватывать, а не все в кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 16:04:28 |
|
||
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
webphpСпасибо, но лучше вместо книг, буду практиковатьснадо не вместо, а параллельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 17:38:51 |
|
||
|
Связка из 4 таблиц
|
|||
|---|---|---|---|
|
#18+
webphpСпасибо, но лучше вместо книг, буду практиковаться, теория конечно важна, но когда сам помучаешься, запомнишь на всегда, для меня просто теорию лучше постепенно подхватывать, а не все в кучу. Вынужден Вас огорчить. Именно в случае SQL это заявление - наиболее глупое из всех возможных. SQL - это совершенно иная идеология подхода к организации, хранению и обработке данных. И если соваться туда без предварительного глубокого освоения теории, шансов вынуть руки из задницы практически не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 18:11:48 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38582133&tid=1835140]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 341ms |

| 0 / 0 |
