2016-04-19 2 views
0

У меня есть две таблицы Имя комбината и продуктов, Комбинат имеет несколько продуктов внутри и объединить строго 3 продукты так, что у меня есть две таблицы strutred, как показано ниже:SQL объединить несколько столбцов в разных строках

Combine | id | name | image     | item1 | item2 | item3 
      1 | exmpl | www.exmpl.com/exmp.jpg | 3  | 2  | 16 

Product | id | name   | image       | stock 
      2 | productexmpl | www.product.com/product2.jpg | 3  
      3 | productexmpl2 | www.product.com/product3.jpg | 7 
      16 | productexmpl3 | www.product.com/product16.jpg | 3 

Что я хочу чтобы получить поиск по идентификатору комбайна, как SELECT * FROM Combine Where id = '' и получить продукты комбинирования в разных строках, то, что я пробовал, является объединение таблиц с SELECT * FROM Combine as c JOIN Product as p on c.item1 = p.id AND c.item2 = p.id AND c.item3 = p.id, но оно объединяет информацию по горизонтали, что я хочу, чтобы получить информацию по вертикали, что означает в разных строках, как показано ниже

id | name   | image       | stock 
    2 | productexmpl | www.product.com/product2.jpg | 3  
    3 | productexmpl2 | www.product.com/product3.jpg | 7 
    16 | productexmpl3 | www.product.com/product16.jpg | 3 

я не знаю, если structre неправильно по дизайну, но любая помощь ценится

Спасибо

+0

Я не понимаю ваш пример, но вы могли бы разрешите это, присоединившись к таблице 3 раза, один раз в каждом заявлении. "JOIN product AS p1 ON p.id = c.item1" "JOIN product AS p2 ON p2.id = c.item2" –

ответ

1

вы можете попробовать этот запрос:

SELECT p.id, p.name, p.image, p.stock 
FROM Combine as c 
inner join 
Product as p 
on (c.item1=p.id or c.item2=p.id or c.item3=p.id) 
Where id = ### 
+0

Спасибо, так что в основном или делаете это подключение отдельно для нас – KBB

Смежные вопросы