假设我有两个表,一个person
表和一个orders
表。 person
表包含personID
字段和name
字段等。 orders
表包含orderID
字段等。我想返回有关一个或多个人的信息,但除此之外,我想使用personID查询要在每行中返回的其他信息。例如:
personID name + orderID
120 John 5000
我现在的查询如下:
SELECT p.personID, p.name
FROM person p
WHERE p.name = "John"
我想返回一个匹配该名称查询的人员列表,但是对于每个结果,还要使用personID查找属于两个日期的特定订单(一个订单),检查“活动”标记,等,或者如果该顺序不存在,则为orderID返回null。
答案 0 :(得分:6)
假设指定的人在给定日期和旗帜之间只有1 订单。
SELECT p.personID, p.name, (Select OrderId From Orders o Where o.PersonId = p.personID and o.Date Between Value1 And Value2 And o.FlagColumn = 'Active') As OrderId
FROM Person p
WHERE p.name = "John"
你也可以为此JOIN
。
SELECT p.personID, p.name, o.OrderId
FROM Person p
JOIN Orders o On p.PersonId = o.PersonId
WHERE p.name = "John" And
o.Date Between Value1 And Value2 And
o.FlagColumn = 'Active'
答案 1 :(得分:1)
试试这个
Select p.*
From Person p
JOIN Orders o
ON p.PersonID = o.PersonID AND
(o.OrderDate BETWEEN '2013-07-01' AND '2013-07-30') AND
(o.IsActive = 1)
WHERE p.Name = 'John'