0

我需要一个基于 3 个表从 1 个表中检索数据的查询:

表格1

识别码 | GID
1 | 0
2 | 1
3 | 1
4 | 2

表2

客户识别码 | UID
1 | 2
2 | 3
3 | 4
4 | 5

表3

盖子 | CID
1 | 2
2 | 2
3 | 3
4 | 1

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

4

4 回答 4

1

除非我打错字

SELECT 
    t3.*
FROM
    t3
        LEFT JOIN
    t2 ON t3.cid = t2.cid
        LEFT JOIN
    t1 ON t2.uid = t1.uid
WHERE
    t1.gid = 1;

带表:

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);
于 2013-08-23T14:04:21.797 回答
0

你可以使用这个:

SELECT Table3.* FROM Table1 LEFT JOIN (Table2, Table3) 
ON (table1.GID=1 and table2.UID=table1.UID and table3.CID=table2.CID)
于 2013-08-23T14:00:16.573 回答
0

您可以使用此查询

SELECT table3.* 
FROM table1 
JOIN table2 
JOIN table3 
WHERE table1.GID=1 
and table2.UID=table1.UID 
and table3.CID=table2.CID
于 2013-08-23T13:55:27.923 回答
0
SELECT table3.*
FROM table1
INNER JOIN table2 ON (table1.UID = table2.UID)
INNER JOIN table3 ON (table3.CID = table2.CID)
WHERE table1.GID = 1
于 2013-08-23T13:56:30.923 回答