首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL-如何从3个表中获取数据?

MySQL-如何从3个表中获取数据?
EN

Stack Overflow用户
提问于 2013-08-23 13:52:17
回答 4查看 77关注 0票数 0

我需要一个查询,根据3个表从1个表中检索数据:

Table1

UID _ GID

1%-0

2/2-1

3-1

4/2

Table2

1/2

2/2-3

3/4

4/5

Table3

盖德·CID

1/2

2-2-2

3-3-3

4-1

现在我需要从table3检索数据,其中table1.GID=1、table2.UID=table1.UID和table3.CID=table2.CID

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-23 14:00:16

你可以用这个:

代码语言:javascript
复制
SELECT Table3.* FROM Table1 LEFT JOIN (Table2, Table3) 
ON (table1.GID=1 and table2.UID=table1.UID and table3.CID=table2.CID)
票数 0
EN

Stack Overflow用户

发布于 2013-08-23 14:04:21

除非我做了一个错误

代码语言:javascript
复制
SELECT 
    t3.*
FROM
    t3
        LEFT JOIN
    t2 ON t3.cid = t2.cid
        LEFT JOIN
    t1 ON t2.uid = t1.uid
WHERE
    t1.gid = 1;

附表:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `t1` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `gid` int(11) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `t1` (`uid`, `gid`) VALUES
(1, 0),
(2, 1),
(3, 1),
(4, 2);

CREATE TABLE IF NOT EXISTS `t2` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


INSERT INTO `t2` (`cid`, `uid`) VALUES
(1, 2),
(2, 3),
(3, 4),
(4, 5);

CREATE TABLE IF NOT EXISTS `t3` (
  `lid` int(11) NOT NULL AUTO_INCREMENT,
  `cid` int(11) NOT NULL,
  PRIMARY KEY (`lid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `t3` (`lid`, `cid`) VALUES
(1, 2),
(2, 2),
(3, 3),
(4, 1);
票数 1
EN

Stack Overflow用户

发布于 2013-08-23 13:55:27

您可以使用此查询。

代码语言:javascript
复制
SELECT table3.* 
FROM table1 
JOIN table2 
JOIN table3 
WHERE table1.GID=1 
and table2.UID=table1.UID 
and table3.CID=table2.CID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18404588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档