我有两张桌子:
+-----------------------+
| Tables_in_my_database |
+-----------------------+
| orders |
| orderTaken |
+-----------------------+
在订单中,有orderId
,orderName
等属性
在订单中,有userId
,orderId
和orderStatus
等属性。
基本上,我的项目运行机制如下:
具有唯一userId的用户将能够从网页下订单,其中每个订单也有自己唯一的orderId
。完成后,orderTaken
表将记录userId,orderId
并初始设置orderStatus = 1
。
现在,我想选择一个用户orderStatus = 1
所采取的订单,但我还需要显示订单表中的orderName。我已经学会了内连接并写了一个查询:
SELECT * FROM orders
WHERE orders.orderId IN
(SELECT orderId FROM orderTaken
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1')
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId
然而,MySQL一直在抱怨语法错误。我想我不能用这种方式加入内连接?任何人都可以纠正我吗?谢谢!
答案 0 :(得分:6)
SELECT * FROM orders
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1'
你已经过度复杂了。这将有效。
我已经为userId
留下了引号,因为我认为这是正确的,但如果它们的数据类型为INT
,那么您应该删除它们。
如果您想在JOIN
上阅读,请参阅这些链接
答案 1 :(得分:0)
试试这个
SELECT *
FROM (orders INNER JOIN ordersTaken ON orders.orderId = orderTaken.orderId)
WHERE orderId IN
(SELECT orderId
FROM orderTaken
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1')