powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / связывание таблиц - помощь с запросом....
9 сообщений из 9, страница 1 из 1
связывание таблиц - помощь с запросом....
    #32583750
jv13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 ---- Есть таблица с товарами _items
в которой каждый товар определяется полем item_id и еще все товары
на самом деле разбиваются по группам за что отвечает поле topic_id

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
item_id  topic_id      name   
    1         1           шлем 1 
    2         1           шлем 2   
    3         1           шлем 3   
    4         3           шлем 4  
    5         7           шлем 5  
    6         1           шлем 6  
    7         1           шлем 7 


2 ---- Есть таблица _refs с так называемыми справочниками, то есть названим и значениями характеристик товара


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ref_id  cls_id      name   
    1         0      Brand 
    2         1    YAMAHA  
    3         1      SONY  
    4         1   PANASONIC  
    5         1     РУБИН 
    6         1   ГОРИЗОНТ 
    7         1  БОЛЬШЕВИЧКА 

где ref_id - это индекс справочника
cls_id - это индекс родительского элеманта
name - это имя справочника или значения справочника, если у него есть родитель
Здесь у нас есть характеристика Бренд-производитель и у нее 6 значение, названий фирмы производителя

3 ---- есть таблица _items_ref, которая определяет связь товара и значения справочника


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
item_id  ref_id  
      1       3
      2       4 
      3       5 
      4       6 
      5       3    
      6       3
      7       4
то есть здесь у нас товар 1 - это SOny, товар 2 - это Panasonic и так далее

Вопрос - нужно вывести всех производителей определенной группы товаров???
например товаров первой группы, у которых topic_id=1

Может я конечно все усложняю но по-моему без join здесь не обойтись...

Огромное спасибо.
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32583927
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навскидку
Код: plaintext
1.
2.
3.
4.
5.
SELECT _refs.name
  FROM _item
    LEFT JOIN _items_ref ON _item.item_id=_items_ref.item_id
    LEFT JOIN _refs ON (_items_ref.ref_id=_refs.ref_id AND _refs.cls_id= 1 )
  WHERE topic_id= 1 
Комментарии:
Запрос даст выборку по товарам в группе 1, но не даст товаров в группах ниже.
Другими словами если у вас есть рекурсия с произвольной вложенностью - двумя байтами не обойтись :)

Вам ведь нужны не все аттрибуты а только бренды, поэтому появилось условие _refs.cls_id=1

А в остальном - банальный запрос.

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32583948
jv13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибочки огромное!!!!!
Все вроде работает, только я поменял LEFT на INNER, потому что при LEFT выводятся пустые NULL строки....
Еще раз спасибо, буду грызть JOIN дальше....:)

Кстати, а 'для чайников JOINа' не скажите в трех словах чем все-таки отличаются INNER и LEFT?
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32583986
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторКстати, а 'для чайников JOINа' не скажите в трех словах чем все-таки отличаются INNER и LEFT?

Тем как раз, что INNER выдает только те товары, на которые занесены бренды,
а LEFT в случае отсутствия кое-где у нас ещё порой бренда даст NULL.

Если тебя устроит INNER - то можно проще:

Код: plaintext
1.
2.
3.
4.
5.
SELECT _refs.name
  FROM _item,_items_ref ,_refs
  WHERE  topic_id= 1 
      AND _item.item_id=_items_ref.item_id
      AND _items_ref.ref_id=_refs.ref_id 
      AND _refs.cls_id= 1 



Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32584067
jv13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз СПАСИБО:)
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32584824
jv13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маленький дополнительный вопрос:)
А вот если у нас несколько товаров одной фирмы, то в самом результате запроса фирма производитель столько раз и повторяется сколько у нас товаров этой фирмы....

Как ИСКЛЮЧИТЬ повторяющиеся записи в результате запроса....

ThanX
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32584913
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
SELECT [color=red]DISTINCT [/color]_refs.name 
.....
Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32585421
jv13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо:)

ответ всегда плавает на поверхности.... и он намного проще чем думаешь:)
...
Рейтинг: 0 / 0
связывание таблиц - помощь с запросом....
    #32585480
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не всегда
:)

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


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