嘿,伙计们,我非常接近于能够代表我想要显示的数据,这个列就是a.state_Id
。我从我所做的研究中了解到,a.State_Id
超出了我的范围。我的sql语句缺少的部分是什么?
如果我取出a.State_ID = c.State_Id
,只留下b.Product_Id = c.Product_Id
,那么数据就会显示出来,但是我需要与状态和产品匹配。
我知道我需要在某个地方添加另一个join
,但我不确定如何添加。如果有人能帮我那就太棒了!
SELECT a.state_id,
a.state_name,
a.state_abbreviatedname,
b.product_id,
b.product_name,
c.stateproduct_price
FROM states a,
products b
LEFT OUTER JOIN stateproducts c
ON a.state_id = c.state_id AND b.product_id = c.product_id
更新1
已填充状态表,并包含以下字段:
State_Id
State_Name
State_AbbreviatedName
已填充以包含基本产品的products表。本表有以下字段:
Product_Id
Product_Name
每个州将有相同的产品,但是每个产品的价格随着每个州的不同而变化。这就是为什么我有StateProducts表的原因。此表为空,将由我创建的接口逐一填充。政治家产品表将包含以下字段
State_Id //reference/relational field to be user for comparison
Product_Id //reference/relational field to be user for comparison
StateProduct_Price //new field
因此,我理解我将在price列中接收空值。
我已经能够退回一种美国的卡通产品和产品表。但是,我现在需要在这个图表的右侧为每一个组合追加价格。考虑到国产化表是空的,我怎么做到这一点?
发布于 2013-02-11 15:50:51
我猜您有一个Many-to-Many
关系,其中States
可以有多个Products
,Products
可以在不同的States
上。因此,您需要将States
加入到映射表StateProducts
中,以便能够在表Products
上获得产品。
SELECT a.State_ID,
a.State_Name,
a.State_AbbreviatedName,
b.Product_Id,
b.Product_Name,
c.StateProduct_Price
FROM States a
INNER JOIN StateProducts c
ON a.State_ID = c.State_Id
INNER JOIN Products b
ON b.Product_Id = c.Product_Id
若要获得更多关于联接的知识,请访问以下链接:
更新1
使用CROSS JOIN
关键字,
SELECT a.state_id, a.state_name, a.state_abbreviatedname, b.product_id, b.product_name, c.stateproduct_price
FROM states a
CROSS JOIN products b
LEFT OUTER JOIN stateproducts c
ON a.state_id = c.state_id AND
b.product_id = c.product_id
发布于 2013-02-11 15:53:08
从A到C,C到B。
通过为每个用户做左联接,您仍然将得到所有可能的状态,而不管是否有实际的状态产品。
SELECT
a.State_ID,
a.State_Name,
a.State_AbbreviatedName,
b.Product_Id,
b.Product_Name,
c.Product_Price
FROM
States a
LEFT JOIN StateProducts c
ON a.State_ID = c.State_Id
LEFT JOIN Products b
ON c.Product_Id = b.Product_Id
发布于 2013-02-11 15:51:51
试着像这样写from子句:
from StateProducts c join
States a
on c.state_id = c.state_id join
Products b
on c.product_id = b.product_id
对于笛卡尔乘积(即,获取所有状态和乘积的例子):
SELECT s.state_id, s.state_name, s.state_abbreviatedname,
p.product_id, p.product_name,
sp.stateproduct_price
from States s cross join
Products p left outer join
StateProducts sp
on sp.state_id = s.state_id and
sp.product_id = p.product_id
https://stackoverflow.com/questions/14815627
复制相似问题