我有两张表要连接在一起。
表格1
Year, ID, Theme,
表2
First, Last, WeekID, Date, Affiliation
我想使用这个命令
SELECT *
FROM Table1
CROSS JOIN Table2
WHERE Table1.ID = 5
AND WHERE Table2.Date >= 1/1/2011
AND Table2.Date <= 12/30/2011
ORDER BY Asc
我想要发生的是选择表 1 中的所有行和列,其中 ID 列包含 int 值 5。在表 2 中,应选择给定日期范围内的所有列和行。
我想知道该WHERE
子句是否应该CROSS JOIN
像我上面所说的那样出现在该子句之后。我还应该删除第二个WHERE
关键字,而是使用以下命令。
SELECT *
FROM Table1
CROSS JOIN Table2
WHERE Table1.ID = 5
AND Table2.Date >= 1/1/2011
AND Table2.Date <= 12/30/2011
ORDER BY Asc
我的第三个问题是棘手的。可以在这样的单个命令中使用 2 个不同WHERE
的子句但应用于单独的表吗?WHERE Table1 (*Condition*) AND WHERE Table2 (*Condition*)
当我加入表格时,我可以有什么意思?
JOIN
我想我可以通过为每个表创建 2 个单独的 SQL 命令 1 并避免使用and2 WHERE
子句来轻松解决整个问题。这会是你推荐的吗?
最终结果看起来像这样
表3
ID, Year, Theme, WeekID, Date, First, Last, Affiliation
然后,单元格将根据日期按升序排列。
示例表如下
表3
ID Year Theme WeekID Date First Last Affiliation
5 2011 Stuff1 1 01/09/2011 Foo Bar Baz Inc
5 2011 Stuff2 2 01/14/2011 Flum Baz Bar Inc
5 2011 Stuff3 3 04/15/2011 Bar Flum Bub Inc
5 2011 Stuff4 4 05/01/2011 Bar Foo FlumBub Inc
5 2011 Stuff5 5 08/16/2011 Bub Baz Foo Inc