2016-11-21 5 views
0

у меня есть эти 5 таблиц, который sale_order непосредственно связан с sale_order_line, что имеют продукты порядка, конечно, который подключен к product_product, который подключен к product_template, где таблица называется mrp_bom может подключиться к шаблону продукта и подключенной к нему таблице, которая равна bom_line. Я пытаюсь вывода продуктов, которые содержат слово 836gPostgreSQL Inner Регистрация Где получить идентификаторы 3 продукта

Вот то, что я до сих пор:

Select  so.name, 
    pt.name, 
    sol.name 
From sale_order so 

Inner Join sale_order_line sol 
On so.id = sol.order_id 
Inner Join product_template pt 
On sol.product_id = pt.id 
Inner Join mrp_bom bom 
On pt.id = bom.product_tmpl_id 
Inner Join mrp_bom_line boml 
On bom.id = boml.bom_id 

Where boml.product_id = (Select id From product_template Where name Like '%836g%' 

Order By so.name 

Этот код выдает ошибку, потому что у меня есть 3 пунктов с 836g. Я попытался изменить = в состоянии на IN, чтобы он захватил все id с его возвратом. Но все же это дает мне ошибку. Это лучшее, что у меня есть до сих пор, я много раз пробовал, но не могу понять.

+1

Есть ли причина, по которой вы не можете просто использовать это: 'WHERE pt.id LIKE '% 836g%''? Можете ли вы показать нам пример ввода и вывода? –

+0

его идентификатор не является строкой. 836g - это всего лишь часть одного из моих продуктов. – Siege21x

+0

Вы используете MySQL или Postgres? Это разные базы данных. –

ответ

0

У меня есть ощущение, что что-то вдоль этих линий, что вы на самом деле хотите:

SELECT so.name, 
     pt.name, 
     sol.name 
FROM sale_order so 
INNER JOIN sale_order_line sol 
    ON so.id = sol.order_id 
INNER JOIN product_template pt 
    ON sol.product_id = pt.id 
INNER JOIN mrp_bom bom 
    ON pt.id = bom.product_tmpl_id 
INNER JOIN mrp_bom_line boml 
    ON bom.id = boml.bom_id 
WHERE pt.name LIKE '%836g%'  -- just add a WHERE condition directly in your query 
ORDER BY so.name 
+0

Я уже пробовал это раньше, прежде чем у меня был мой вопрос, но спасибо за усилия! – Siege21x

+0

Какая ошибка у вас? Можете ли вы показать нам пример ввода и вывода? –

0

OMG! Я просто получил ответ. Я не думаю, что это поможет любому, но я вывешу ответ я

SELECT so.name, 
    pt.name PT, 
    sol.name SOL, 
    (Select pp1.name_template From product_product pp1 Where boml.product_id = pp1.id) BOML, 
    boml.product_id 

ИЗ sale_order так INNER JOIN sale_order_line золь НА so.id = sol.order_id INNER JOIN product_template пт ON золы .product_id = pt.id INNER JOIN mrp_bom бом ON pt.id = bom.product_tmpl_id INNER JOIN mrp_bom_line boml ON bom.id = boml.bom_id WHERE (Выбрать pp1.name_template Из product_product ПП1 Где boml.product_id = PP1 .id) LIKE '% 836g%' ORDER BY so.name

Спасибо всем за усилия, которые помогут мне! Большое сообщество, которое мы получили здесь! : D