从三个表中获取数据时的笛卡尔积

时间:2016-01-04 10:45:39

标签: mysql

有三个表

  • master_table(item_iditem_name
  • 详情(availabilityitem_id
  • 价格(priceitem_id

我希望根据主屏幕中显示的item_name获取availabilitypriceitem_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;

但我得到的是笛卡尔积。

1 个答案:

答案 0 :(得分:0)

你说你得到的是笛卡尔积;你是说这个因为每个item_id得到多行?

据推测,item_id是master_table的主键。其他两个表的主键是什么?因为你只加入了item_id,如果他们的PK是不仅 item_id(我认为它们不是,否则你可以将所有这些数据放在一个表中)然后有多个具有相同的行另外两个表中的item_id将为每个item_id提供多行。