从多个表中选择数据而无需多个查询

时间:2012-07-10 10:58:58

标签: php mysql mysql-workbench

MySQL - Workbench(PHP):

表:

  1. TUsers(与TCompanies的一对多关系):
    • TUsers_CompanyID(FOREIGN KEY)
    • TUsers_UserName
    • TUsers_UserPassword
    • TUsers_ID(UNIQUE)
  2. TCompanies:
    • TCompanies_CompanyName
    • TCompanies_CompanyContactNumber
    • TCompanies_CompanyAddress
    • TCompanies_ID(UNIQUE)
  3. 是否可以在不使用JOIN或INNER JOIN查询命令的情况下链接关系数据库中的多个表,而无需在表中复制数据?

    因此,甚至说另一种创建关系的方式,使一个表“指向”另一个数据。

    这样人们就可以查询以下内容并立即成功从所有表中检索所有数据:

    MySQL: SELECT * FROM TUsers;

    见上面的例子..

2 个答案:

答案 0 :(得分:1)

你可以在没有“出现”的情况下使用连接(即,JOIN这个词不在查询中),但是MySQL仍会执行JOIN ......

SELECT *
FROM TUsers, TCompanies 
WHERE TUsers_CompanyID=TCompanies_ID;

答案 1 :(得分:0)

您将无法使用JOIN来表示您希望如何显示数据,但您可能想要做的是创建所谓的VIEW,以便实际上,只要您想查询用户数据,就不必输入JOIN命令:

CREATE VIEW UsersView AS
SELECT *
FROM TUsers a
INNER JOIN TCompanies b ON a.TUsers_CompanyID = b.TCompanies_ID

然后,一旦定义了视图,您就可以像UsersView那样选择:

SELECT * FROM UsersView

...它将返回用户信息 以及 加入的公司信息。您可以将视图视为简化(或“简化”)更复杂查询的一种方式,因为在底层,它实际上与以下内容相同:

SELECT *
FROM
(
    SELECT *
    FROM TUsers a
    INNER JOIN TCompanies b ON a.TUsers_CompanyID = b.TCompanies_ID
) UsersView