如何按顺序从三个或更多相关表中选择值

时间:2013-01-07 10:16:22

标签: mysql sql

我的数据库中有三个相关的表。 GrammarsUsersOrganizationsGrammars表与users表到字段creator的字段int相关,并且是来自users id的外键。 接下来,我们有organizations表,而该表又与users表相关。类型为Users的{​​{1}}表字段organization是表id的外键。 如何通过organizations id选择一个语法,然后选择相应的id信息,然后选择用户所属的相应creator信息?

organization

describe grammars;

+------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | short_name | varchar(255) | YES | | NULL | | | description | varchar(255) | YES | | NULL | | | domain | int(10) unsigned | YES | MUL | NULL | | | url | varchar(255) | YES | | NULL | | | seo_friendly_url | varchar(255) | NO | | NULL | | | encoding | int(11) unsigned | YES | MUL | NULL | | | distribution | int(11) unsigned | YES | MUL | NULL | | | project | int(11) unsigned | YES | MUL | NULL | | | creator | int(11) unsigned | YES | MUL | NULL | | | language | int(11) unsigned | YES | MUL | NULL | | | link | varchar(255) | NO | | NULL | | | creation_date | datetime | NO | | NULL | | | last_update | datetime | NO | | NULL | | | schema | varchar(255) | YES | | NULL | | | type | int(11) unsigned | YES | MUL | NULL | | | organization | int(11) unsigned | YES | MUL | NULL | | +------------------+------------------+------+-----+---------+----------------+

describe Users;

+--------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | first_name | varchar(20) | NO | | NULL | | | last_name | varchar(40) | NO | | NULL | | | username | varchar(30) | NO | MUL | NULL | | | password | varbinary(32) | NO | | NULL | | | email | varchar(80) | NO | MUL | NULL | | | organization | int(11) unsigned | YES | MUL | NULL | | | group | int(11) unsigned | NO | MUL | 1 | | +--------------+------------------+------+-----+---------+----------------+

describe Organizations;

当我尝试

+--------------------+------------------+------+-----+---------+----------------+
| Field              | Type             | Null | Key | Default | Extra          |
+--------------------+------------------+------+-----+---------+----------------+
| id                 | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| name               | varchar(255)     | NO   |     | NULL    |                |
| department         | varchar(255)     | NO   |     | NULL    |                |
| communication_info | varchar(255)     | NO   |     | NULL    |                |
+--------------------+------------------+------+-----+---------+----------------+

我有空值而有值。有什么建议??

1 个答案:

答案 0 :(得分:0)

此查询未返回任何数据的唯一原因是因为Grammars中没有行可以完成:    Grammars.id = id

如果您正在使用LEFT JOIN,则不会限制Grammars返回。 " id"的价值是多少? ?看看你的表格,我看到你有一个" id"每一个中的字段...您应该限定此字段名称并确保某些行符合条件。