sql 中的多项选择和比较
Multiple selects and comparisons in sql
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)";
我有两个 table,一个叫客户,一个叫订单。在我的客户 table 中,我想检索所有当前登录系统的人,然后将其与我的订单 table 进行匹配,以查看他们当前是否还有任何待处理的订单。这两个 table 都包含一个包含相同值的 customerid 列。但是,我不确定如何在一个语句中使用和执行登录检查。以上是我所做的尝试之一,目前不正确,因为它需要为 customerid 添加一个连接,但我不确定由谁来执行此操作。此外,我使用的 sql 驱动程序是 Apache Derby,以防有人想知道
您几乎已经搞定了 - 至少有一个解决方案...我猜您遇到了一个错误,因为您的子查询中有一个恶意逗号:
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)";
您的查询没问题,但您需要在末尾 select "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
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)";
我有两个 table,一个叫客户,一个叫订单。在我的客户 table 中,我想检索所有当前登录系统的人,然后将其与我的订单 table 进行匹配,以查看他们当前是否还有任何待处理的订单。这两个 table 都包含一个包含相同值的 customerid 列。但是,我不确定如何在一个语句中使用和执行登录检查。以上是我所做的尝试之一,目前不正确,因为它需要为 customerid 添加一个连接,但我不确定由谁来执行此操作。此外,我使用的 sql 驱动程序是 Apache Derby,以防有人想知道
您几乎已经搞定了 - 至少有一个解决方案...我猜您遇到了一个错误,因为您的子查询中有一个恶意逗号:
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)";
您的查询没问题,但您需要在末尾 select "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