我想从我的3表查询,但我不知道我应该使用哪个JOIN。我想显示所有的table2的item_id和item_name,还显示stat和shipped from table3,即使它为NULL。还有,user_id from table1。
表一
CREATE TABLE table1(
id NOT NULL AUTO_INCREMENT,
user_name varchar(255),
);
表二
CREATE TABLE table2(
id NOT NULL AUTO_INCREMENT,
item_name varchar(255),
);
表三
CREATE TABLE table3 (
id int NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
item_id int NOT NULL,
stat tinyint NOT NULL,
shipped tinyint NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES table1(id),
FOREIGN KEY (item_id) REFERENCES table2(id)
);
我尝试了左内联接,但只得到了表3。
谢谢大家!
4条答案
按热度按时间k2fxgqgv1#
您可以使用左连接来实现这一点。左连接将确保结果中包含table2中的所有记录,即使table3中没有匹配的记录
bq8i3lrv2#
由于您需要tabl2中的所有条目,因此应从tabl2开始,并使用
left outer join
或缩写left join
添加其他表nukf8bse3#
您可以从
table2
开始,因为这是必需的表,而LEFT JOIN
与其他两个表一起使用epggiuax4#
下面的查询从
table2
开始,因为您需要显示所有物料,即使它们的状态为NULL。假设table2
和table3
之间的关系是1-1,则下面的查询将为每个物料显示一行。