1

表:产品:属性:pid、name

表名:item_product

属性:Itemid、@pid、长度、价格、颜色。pid 是来自产品的外键

Itemid       pid            length          price    colour
1              1              3               5        blue
2              1              4               10        red
3              2              3               5         blue
4              2              6               20         green
5              3              4               4           g
6              4              3                3          r
7               1              3               4           e
8               1              4               6           r                   
9               2              6                100      light_blue

pid 重复考虑了数据库,但上面的表格是一个小想法,我想从与产品 ID 及其颜色相关的长度中选择所有内容

我有这个查询,但它重复了

SELECT length, 
price FROM item_product WHERE pid=:id 

如果我运行上面的查询并将 pid 更改为 1。它只会显示 pid 1 的所有内容,但我只希望它显示它是否与产品name中的产品相关product table

4

2 回答 2

0

你可以INNER JOIN像这样使用:

例如,我有名为、 、MouseKeyboard的产品。在我的桌子上,我只有鼠标、键盘、显示器和平板电脑的物品,但没有. 因此,当我将两个表硬盘驱动器排除在外时,因为它不在表中,但尽管它在表中。MonitorTabletHard DriveItem_ProductHard DriveINNER JOINItem_ProductProduct

SELECT Itemid, B.name, length, price, colour
FROM item_product A
INNER JOIN product B
ON A.pid = B.pid

检查我的sqlfiddle 演示

如果您只想查看特定产品,则可以使用 productid (pid) 或产品名称,例如:

SELECT Itemid, B.name, length, price, colour
FROM item_product A
INNER JOIN product B
ON A.pid = B.pid
WHERE B.name = 'Mouse'

这里的例子

如果您想了解更多有关JOIN检查此链接JOIN的信息,它会向您展示sql中如何工作的可视化表示。

于 2013-06-13T00:44:11.053 回答
0

您可以使用以下内容。我正在使用对表产品的内部联接,并在名称上添加了where子句。

选择点名,
长度,
价格
FROM item_product 作为 pr
        内部连接产品作为 pt.pid = pr.pid 上的 pt
WHERE pr.pid = 1 和 pt.name = 'name'

在 where 子句中,您需要按产品名称进行过滤。因此,将 [name] 更改为您所追求的。

如果您只想按名称过滤,则与上面的查询相同,但只对名称执行where子句。

选择点名,
长度,
价格
FROM item_product 作为 pr
        内部连接产品作为 pt.pid = pr.pid 上的 pt
WHERE pt.name = '名称'

让我知道这是否是你所追求的。

于 2013-06-13T00:46:22.390 回答