Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Может или не может MySQL делать сложную выборку из нескольких таблиц? / 11 сообщений из 11, страница 1 из 1
31.01.2015, 17:48:14
    #38868480
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
Доброго времени суток.
Помогите решить спор. Проект создаем на laravel4, но собственно суть ни в этом.
Есть некая база со следующими таблицами:

(таблица categories)
id | name
1 | Жесткие диски
2 | Аккумуляторы

(таблица protucts)
id | category_id | name | price
1 | 1 | WD | 100
2 | 1 | Sams | 200
3 | 2 | Super| 20

(таблица attributes)
id | category_id | name
1 | 1 | Объём
2 | 1 | Тип
3 | 1 | Скорость
4 | 2 | Ёмкость
5 | 2 | Тип

(таблица protuct_attributes)
id | protuct_id | attribute_id | value
1 | 1 | 1 | 1Tb
2 | 1 | 2 | sata II
3 | 1 | 3 | 7 200
4 | 2 | 1 | 2Tb
5 | 2 | 2 | sata III
6 | 2 | 3 | 10 000
7 | 3 | 4 | 2800
8 | 4 | 5 | AA

Т.е. есть таблица с товарами protucts и в ней есть атрибут price , собственно по нему можно отсортировать некий товар по диапазону цен.
А вот стальные атрибуты хранятся в таблице protuct_attributes .
Задача стоит отсортировать в одном запросе товар не только по диапазону цен, но и по остальным атрибутам - скажем по "Объём" если это жесткий диск.
Мне сказали, что MySQL в принципе на подобное не способен.
Так ли это?
...
Рейтинг: 0 / 0
31.01.2015, 19:21:56
    #38868525
Может или не может MySQL делать сложную выборку из нескольких таблиц?
HunterNomad,
отсортировать или отфильтровать?
словесное описание задачи сильно хромает. лучше бы привел тестовый набор данных, входные параметры поиска товара и желаемый результат на всём этом...


но в целом, не думаю, что задача настолько уж нерешаемая в рамках MySQL.
...
Рейтинг: 0 / 0
31.01.2015, 20:02:03
    #38868543
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
Добрый Э - ЭхHunterNomad,
отсортировать или отфильтровать?
словесное описание задачи сильно хромает. лучше бы привел тестовый набор данных, входные параметры поиска товара и желаемый результат на всём этом...


но в целом, не думаю, что задача настолько уж нерешаемая в рамках MySQL.
Согласен)) С терминами обшибся))
Нужно именно отфильтровать товары не только по цене, но и по атрибутам из другой таблицы protuct_attributes .
Не подскажите в какую сторону копать?
Может смогу доказать друзьям обратное))))
...
Рейтинг: 0 / 0
31.01.2015, 20:09:28
    #38868550
Может или не может MySQL делать сложную выборку из нескольких таблиц?
HunterNomad,

копать в сторону [LEFT | RIGHT] JOIN + WHERE.
...
Рейтинг: 0 / 0
31.01.2015, 21:04:08
    #38868575
Может или не может MySQL делать сложную выборку из нескольких таблиц?
Добрый Э - ЭхHunterNomad,

копать в сторону [LEFT | RIGHT] JOIN + WHERE.

Пробовал, не помогло.
Конечно, возможно запрос не правильно организован.
На выходе нужно получить товары отфильтрованные не только по цене (таблица protucts) но и по остальным атрибутам относящимся к этому товару (таблица protuct_attributes). О как)))))

Все равно спасибо))
...
Рейтинг: 0 / 0
31.01.2015, 21:42:32
    #38868588
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
HunterNomadМне сказали, что MySQL в принципе на подобное не способен.


Способен.
...
Рейтинг: 0 / 0
31.01.2015, 21:44:23
    #38868592
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
Добрый Э - ЭхHunterNomad,

копать в сторону [LEFT | RIGHT] JOIN + WHERE.

Только не LEFT | RIGHT, а просто JOIN.
ведь речь о фильтрации.
...
Рейтинг: 0 / 0
31.01.2015, 21:50:26
    #38868593
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
(таблица categories)
id | name

(таблица protucts)
id | category_id | name | price

(таблица attributes)
id | category_id | name

(таблица protuct_attributes)
id | protuct_id | attribute_id | value


Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
from protucts p
join categories c on c.id = p.category_id
join attributes a on a.category_id = p.category_id and a.name = 'Объём'
join protuct_attributes pa on pa.attribute_id = a.id and pa.protuct_id = p.id 
where c.name = 'Жесткие диски'
  and a.value = '1Tb'
...
Рейтинг: 0 / 0
02.02.2015, 11:12:39
    #38869184
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
MasterZiv(таблица categories)
id | name

(таблица protucts)
id | category_id | name | price

(таблица attributes)
id | category_id | name

(таблица protuct_attributes)
id | protuct_id | attribute_id | value


Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
from protucts p
join categories c on c.id = p.category_id
join attributes a on a.category_id = p.category_id and a.name = 'Объём'
join protuct_attributes pa on pa.attribute_id = a.id and pa.protuct_id = p.id 
where c.name = 'Жесткие диски'
  and a.value = '1Tb'




Спасибо)) Есть доказательная база)))))))))))
...
Рейтинг: 0 / 0
02.02.2015, 11:52:50
    #38869237
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
HunterNomadМне сказали, что MySQL в принципе на подобное не способен.Всё, что можно сделать на основании логики предметной области и имеющихся данных, можно сделать запросом.
...
Рейтинг: 0 / 0
02.02.2015, 14:51:43
    #38869553
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может или не может MySQL делать сложную выборку из нескольких таблиц?
Akinaможно сделать запросом.Или несколькими запросами.

Модератор: Поскольку тема вызывает нездоровую реакцию, топик закрываю.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Может или не может MySQL делать сложную выборку из нескольких таблиц? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]