|
|
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Имеется БД. БД спроектирована по особому (форм нормализации нет). Архитектура следующая (все таблицы не пишу): Продукты: ID K V 1 Name some_name 1 Category 13123123 1 Description lalalalalalalalallala 1 Producer 2 ........................................ Производители: ID K V 2 Title some_title 2 Info plsdpasldplsad 2 Addr lalalalalalalalallala Как все догадались поле K - названия свойств объекта, а V - значение свойства. Допустим, в продукте имеется ссылку на производителя (ID=10, K=Producer, V=2(ID производителя)). Как сделать выборку, чтобы выбрались данные из 2-х таблиц, но при этом, чтобы формат вывода был [ID, K, V]? Т.е. на выходе имеем: ID K V 1 Name some_name 1 Category 13123123 1 Description lalalalalalalalallala 1 Producer some_title (т.е. место ID подставили Title) Помогите пожалуйста. И как называется такой метод проектирования БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 14:48 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Неужели никто не знает? =) Гугл мне помочь не смог (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 15:06 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Ищите по словам "Тенцер" и "EAV". Только у вас несколько извращенная разновидность из-за "K - названия свойств объекта". Обычно названия свойств выносятся в справочник. Имхо, имеет смысл к применению только в тех случаях, когда требуется сверхгибкость и можно пожертвовать производительностью (а иногда и надежностью). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 15:13 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Спасибо громадное. Посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 15:29 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Вопрос остается актуальным. Научился делать выборку по связям из нескольких таблиц (с помощью union). А как сделать выборку на основе определенного условия (where V='some_value'?). Нужно, чтобы все свойства объекта попадали в ответ. Как то сделать, кто знает, ответьте пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 10:05 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Ищите лучше. Все обсуждалось много раз, в т.ч. и на этом форуме, в т.ч. и на этом подфоруме. Чаще всего решение выглядит примерно так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 10:46 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Нет. Такой запрос вернет по одной строке для каждого объекта. Мне же нужно, чтобы запрос возвращал все строки нужного объекта (все свойства), но при определенном условии. К примеру. Вернуть все продукта, у которых цена больше 100 - запрос. Нужно чтобы вернулсиь все свойства продукта причем в формате ID, K, V. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 11:07 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Используйте соединение (JOIN) вашей таблицы с подзапросом, выдающем нужный набор ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 11:17 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, так и сделал. Но, при связях с другими сущностями (делаю через union, т.к. нужен формат выхода ID K V) Почему-то не получается сгруппировать и выдать условие по having. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 11:34 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Неужели никто не знает? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 14:19 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
авторПроизводители: ID K V 2 Title some_title 2 Info plsdpasldplsad 2 Addr lalalalalalalalallala Как все догадались поле K - названия свойств объекта, а V - значение свойства.интересно - а как у вас выглядят данные для второго производителя? Покажите пожалуста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 14:33 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Модель EAV. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 14:46 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Изменю вопрос. Как мне условие where (либо having) применить для всех подзапросов (union включая)? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 14:50 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Никакой MySQL-специфики в теме не вижу, так что, пожалуй, топик перенесу. Модератор: Тема перенесена из форума "MySQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:04 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
А тему куда перенесли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:06 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Спецификация MySQl налицо. Мне нужно именно для MySql запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:07 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
извините догадался как-то так Код: plaintext 1. 2. 3. 4. все нужно переводить в "горизонтальный" вид ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:20 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
в том то и дело, что мне нужны данные в вертикальном формате =) (поля ID, K, V) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:26 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
MaratCrashCrashCrashв том то и дело, что мне нужны данные в вертикальном формате =) (поля ID, K, V)я вам показал запрос, который выведет "вертикальный" формат ID K V1 Name some_name1 Category 131231231 Description lalalalalalalalallala1 Producer some_title (т.е. место ID подставили Title) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 15:47 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Ага, а как применить несколько условий к V? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 16:26 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
А какие условия вам еще надо ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2010, 23:52 |
|
||
|
Очень сложный запрос (сложная архитектура БД)
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, Вы до конца не поняли суть запроса. Нужно чтобы выбирались все свойства объектов, определяющих определенному условию (к примеру, когда K = 'Name' и V = 'Crash' - это только одно услвоие, а может быть сколько угодно). Запрос я сделал. Нужно было просто сгурппировать записи и в having сделать проверку на ID, которые получаем из подзапросов в having. Все просто оказалось =) Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2010, 10:33 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36566140&tid=1542774]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 422ms |

| 0 / 0 |
