sql select в отношении «многие ко многим» не работает должным образом - PullRequest
0 голосов
/ 21 июля 2011

У меня есть следующие таблицы по отношению ко многим ко многим:

table product:
prd_cod (pk)
cat_cod (fk)
prd_nome 

table description_characteristic:
prd_cod(fk)
id_characteristic(fk)
description

table characteristic:
id_characteristic(pk)
name

мы предполагаем, что cat_cod будет равен 1, я хотел бы показать такие данные:

Iсделали это, выберите ниже, чтобы решить мою проблему:

select p.prd_cod,p.prd_name,c.name_characteristic,dc.description
from product p,description_characteristic dc, characteristic c
where p.prd_cod = dc.prd_cod and
dc.id_ccharacteristic = c.id_characteristic and
p.cat_cod = 1

, но данные были показаны таким образом:

Prd_cod  Prd_name   name_characteristic  descript  
  1          pen        Color            pink      
  1          Pen        manufacturer     kingston  
  1          Pen        type                 brush
  1          Pen        weight               0.020

Я хочу показатьрезультат таким образом:

Prd_cod  Prd_name   name_characteristic  descript  name_characteristic  descript
  1          pen        Color            pink      type                 brush
  2          Pen-drive  manufacturer     kingston  weight               0.020

Я не могу сделать выбор, чтобы решить эту проблему, пожалуйста, мне нужна помощь Спасибо всем

Ответы [ 2 ]

0 голосов
/ 04 ноября 2014

Этот запрос должен решить вашу проблему, он будет в том же столбце ....

select 
    p.prd_cod
    , p.prd_name 
    , GROUP_CONCAT(c.name,dc.description) cd_list
from 
    product p
    ,description_characteristic dc
    ,characteristic c
where 
    p.prd_cod = dc.prd_cod and
    dc.id_characteristic = c.id_characteristic and
    p.cat_cod = 1
0 голосов
/ 21 июля 2011
Select VALUES YOU WANT
FROM CATEGORIES
LEFT JOIN product ON
product.cat_cod=CATEGORIES.cat_cod
LEFT JOIN description_characteristic ON
product.prd_cod = description_characteristic.prd_cod
LEFT JOIN characteristic ON
description_characteristic.id_characteristic=characteristic.id_characteristic
WHERE CATEGORIES.cat_cod = "1";

Вам нужно будет поместить tablename.column для выбора полей, которые существуют в более чем одной таблице.

(я предположил, что ваша таблица категорий называется CATEGORIES)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...