我创建了这样的三个表格,
1。
CREATE TABLE person (
id int NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
age int,
PRIMARY KEY (id)
);
2。
CREATE TABLE address (
id int NOT NULL AUTO_INCREMENT,
city varchar(50) NOT NULL,
post_code int NOT NULL,
person_id int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (person_id) REFERENCES person(id)
);
3
CREATE TABLE subjects (
id int NOT NULL AUTO_INCREMENT,
subjects_s varchar(50) NOT NULL,
address_id int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (address_id) REFERENCES address(id)
);
现在在桌子中,我有一些这样的信息:
人
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | Sohan | 17 |
| 2 | Farhan | 18 |
+----+--------+------+
地址
+----+-------+-----------+-----------+
| id | city | post_code | person_id |
+----+-------+-----------+-----------+
| 1 | Tongi | 1711 | 1 |
| 2 | Dhaka | 1230 | 2 |
+----+-------+-----------+-----------+
主题
+----+--------------------+------------+
| id | subjects_s | address_id |
+----+--------------------+------------+
| 1 | Accounting Finance | 1 |
| 2 | Physics Math | 2 |
+----+--------------------+------------+
现在我想一起显示所有这些数据。我怎样才能做到这一点?请帮助!
您应该能够使用SQL Join语句组合这些。
MySQL加入文档中详细介绍了语法。
在您的桌子上,您的查询应该看起来像这样:
SELECT person.*, address.*, subjects.*
FROM person
JOIN address ON person.id = address.person_id
JOIN subjects ON address.id = subjects.address_id
请记住,此示例使用内部连接,这可能不是表中数据的正确类型。我建议阅读上面链接的文档以获取进一步的指导。
编辑:这是一个DB小提琴,演示了上面的JOIN
语法。
我理解这个问题是在询问如何检索三个表中的所有相关数据。根据我们试图实现的结果,可能可以使用子Queries而不是JOIN
从多个表获取数据。例如,如果我们想知道哪个学生正在接受"物理学数学",那么我们可以使用子征服来回答这个问题。
SELECT person.* FROM person WHERE person.id IN
(SELECT person_id from address where address.id IN
(SELECT address_id from subjects WHERE subjects.subjects_s = "Physics Math")
)
这是一个DB小提琴,演示了上述子征服。