我有三个表'Hardware_model','Warehouse'和'Brand',表格以这种方式引用: Hardware_model< - >仓库 Hardware_model< - >品牌
现在我要执行以下查询:选择'brand_id等于'10'的所有'仓库'对象。非课程仓库和品牌没有加入,因此它们之间不存在外键。我正在尝试这样的事情:
SELECT *
FROM warehouses
where hardware_id = (SELECT *
FROM hardwares
where brand_id='10')
但它不起作用! 其中hardware_id是'仓库表'字段,brand_id是'硬件表'字段。 有什么建议吗?
答案 0 :(得分:1)
这听起来像一个简单的多表连接。你只需要做一些事情(我只能猜测表结构)。
SELECT w.* FROM warehouses w
JOIN hardwares h ON w.hardware_id = h.hardware_id
JOIN brands b ON h.brand_id = b.brand_id
WHERE brand_id=10;
答案 1 :(得分:0)
它不起作用,因为您的子查询返回多个列,可能还有多行。您应该可以使用JOIN
:
SELECT *
FROM warehouses
JOIN hardwares ON warehouses.hardware_id = hardwares.id
WHERE brand_id = '10'
hardwares.id
应替换为任何键warehouses.hardware_id
引用。即使您未指定FOREIGN KEY
约束,仍可以连接表。
答案 2 :(得分:0)
在大堆中没有倒下的已经过时应该像
SELECT * FROM warehouses
where hardware_id in (SELECT hardware_id FROM hardwares where brand_id='10')
答案 3 :(得分:0)
只是猜测你的牌桌,但也许
SELECT w1.*
FROM warehouses w1,
hardware h1
where w1.hardware_id = h1.hardware_id
and h1.brand_id=10
仓库表中是否有hardware_id?如果没有,你在哪里建立仓库与其中的关系?