String sql = "
SELECT NAME,
SURNAME,
ORDERID,
CUSTOMERID,
PRIORITY,
STATUS,
DATE,
TIME
FROM ORDERS O
WHERE O.CUSTOMERID IN "
+ "(SELECT LOGGEDIN
FROM CUSTOMERS
WHERE LOGGEDIN=1)";
我有两个表叫做客户,一个叫做订单。在我的客户表中,我想要检索当前登录到系统的所有人,然后将其与我的订单表进行匹配,以查看他们当前是否还有待处理的订单。这两个表都包含一个包含相同值的customerid列。但是,我不确定如何在一个语句中使用和执行登录检查。以上是我所做的尝试之一,目前是不正确的,因为它需要为customerid添加一个连接,但我不确定是谁将其执行。另外,我使用的sql驱动程序是Apache Derby,以防有人想知道
答案 0 :(得分:0)
你几乎得到了它 - 至少有一个解决方案......我猜你错了,因为你的子查询中有一个流氓逗号:
String sql = "SELECT NAME, SURNAME, ORDERID, CUSTOMERID, PRIORITY, STATUS, DATE, TIME "
+ "FROM ORDERS O WHERE O.CUSTOMERID IN (SELECT LOGGEDIN, FROM CUSTOMERS WHERE LOGGEDIN=1)";
答案 1 :(得分:0)
您的查询没问题,但您需要在结尾处选择“CUSTOMERID”
... IN (
SELECT CUSTOMERID
FROM CUSTOMERS
WHERE LOGGEDIN=1 )
但我建议用户加入。 要查看有待处理订单的用户:
SELECT C.*
FROM CUSTOMERS C
INNER JOIN ORDERS O
ON O.CUSTOMERID = C.CUSTOMERID
WHERE C.LOGGEDID = 1
GROUP BY C.CUSTOMERID
按用户查看待处理订单:
SELECT *
FROM ORDERS O
INNER JOIN CUSTOMER C
ON O.CUSTOMERID = C.CUSTOMERID AND C.LOGGEDID = 1