我有两个表(SQL Fiddle available here):
人
ID Company_ID Name
1 1 Jones
2 2 Smith
3 3 Kim
4 2 Takahashi
5 3 Patel
6 1 Muler
公司
ID Name
1 QQQ
2 AAA
3 MMM
我希望按照他们工作的公司名称订购一组人员。
SELECT * FROM People WHERE(some where子句)ORDER BY 帮助!
答案 0 :(得分:2)
你应该join
两个表:
SELECT p.*
FROM People p
JOIN Companies c ON c.ID = p.CompaniyID
WHERE --(Some where clause)
ORDER BY c.Name ASC
答案 1 :(得分:1)
SELECT * FROM People INNER JOIN Companies ON Company_ID = Companies.ID ORDER BY Companies.Name
答案 2 :(得分:1)
您需要将人员表与公司表相关联才能执行此操作。您可以通过笛卡尔积来实现,可以通过显式连接子句或只是from中每个表之间的逗号来完成。还需要一个条件来判断第一个表中的哪个字段需要与第二个表的字段对应,否则表1中的每一行都与表2的每一行相关联,这在这种情况下不是您想要的。 / p>
所以这就是它的样子:
SELECT *
FROM TABLE_ONE,
TABLE_TWO
WHERE
FOREIGN_KEY_IN_TABLE_ONE = PRIMARY_KEY_IN_TABLE_TWO
ORDER BY
COLUMN_THAT_YOU_WANT_TO_SORT_ON
使用join子句的其他语法就像这样
SELECT *
FROM TABLE_ONE INNER JOIN TABLE_TWO ON FOREIGN_KEY_TABLE_ONE = PRIMARY_KEY_TABLE_TWO
ORDER BY
COLUMN_THAT_YOU_WANT_TO_SORT_ON
尝试阅读联接方法。 INNER JOIN不是唯一的可能性。