2016-01-04 2 views
1

Есть три таблицыдекартово произведение, получая данные из трех таблиц

  • master_table (item_id, item_name)
  • детали (availability, item_id)
  • цена (price, item_id)

Я хочу получить item_name, availability и price на основе o п item_id, который присутствует в мастер

SELECT 
    rawmaster.item_name, 
    rawdetails.expiry_date, 
    rawdetails.batch_sequence_num, 
    rawdetails.available_qty 
FROM master_rawitem_t rawmaster 
INNER JOIN rawitem_details_t rawdetails 
ON rawmaster.item_id=rawdetails.item_id 
INNER JOIN rawitem_price_t rawprice 
ON rawdetails.item_id=rawprice.item_id; 

Но я получаю декартову продукт.

ответ

0

Вы говорите, что получаете декартовский продукт; вы говорите это, потому что вы получаете больше одной строки на item_id?

Предположительно, item_id является первичным ключом для master_table. Каковы основные ключи двух других таблиц? Поскольку вы только присоединились к item_id, если их PK не просто item_id (что, я полагаю, они не являются, иначе вы могли бы иметь все эти данные в одной таблице), а затем иметь более одной строки с одним и тем же item_id в любом из другие две таблицы будут содержать несколько строк в item_id.

+0

первичный ключ из двух других таблиц сгенерирован сгенерированным сэром – Amith

+0

да я получаю больше одной строки за элемент – Amith

+0

Вы хотите расширить это? Каковы основные ключи этих двух таблиц? –

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