如何在sql中连接三个数据库表

如何在sql中连接三个数据库表,sql,database,left-join,inner-join,outer-join,Sql,Database,Left Join,Inner Join,Outer Join,我有这三个数据库表 CREATE TABLE IF NOT EXISTS `bus_info` ( `bus_id` int(11) NOT NULL, `bus_no` varchar(20) NOT NULL ) INSERT INTO `bus_info` (`bus_id`, `bus_no`) VALUES (1, 'Mh10 BD 5209'); CREATE TABLE IF NOT EXISTS `route_info` ( `route_id` int(11)

我有这三个数据库表

CREATE TABLE IF NOT EXISTS `bus_info` (
  `bus_id` int(11) NOT NULL,
  `bus_no` varchar(20) NOT NULL
)


INSERT INTO `bus_info` (`bus_id`, `bus_no`) VALUES
(1, 'Mh10 BD 5209');

CREATE TABLE IF NOT EXISTS `route_info` (
  `route_id` int(11) NOT NULL,
  `route_name` varchar(100) NOT NULL,
  `latitude` varchar(200) NOT NULL,
  `longitude` varchar(200) NOT NULL
)


INSERT INTO `route_info` (`route_id`, `route_name`, `latitude`, `longitude`) VALUES
(1, 'Sangli Stand', '16.852903', '74.562999'),
(2, 'Maruti Chowk', '16.858100', '74.562460'),
(3, 'Ganpati Mandir', '16.862211', '74.559501'),
(4, 'College Corner ', '16.862854', '74.576579'),
(5, 'Ram Mandir ', '16.856413', '74.574738'),
(6, 'D mart', '16.845782', '74.576866'),
(7, 'Vishrambag sangli', '16.846022', '74.602854'),
(8, 'Bharat Mill', '16.865029', '74.607000'),
(9, 'Bharti hospital', '16.840008', '74.618400'),
(10, 'SBGI', '16.835329', '74.624400');

CREATE TABLE IF NOT EXISTS `route_detail` (
  `rd_id` int(11) NOT NULL,
  `bus_id` int(11) NOT NULL,
  `route_id` int(11) NOT NULL
)

INSERT INTO `route_detail` (`rd_id`, `bus_id`, `route_id`)
    VALUES (1, 1, 1),
           (2, 1, 2);
我正在为一辆公交车分配一条特定的路线。一辆公交车可能有多条路线,然后我需要查询以选择所选公交车的路线

例如:

从route_detail表中的数据库中,为同一总线分配了两条路由,然后我需要上面三个表中的列


总线id、总线号、路线id、纬度、经度

确切的语法将取决于您使用的数据库。要在Oracle中实现这一点,我希望编写这样的查询

select a.bus_id, a.bus_no, c.route_id, c.latitude, c.longitude
from
bus_info a join
route_detail b on a.bus_id = b.bus_id
route_info c on b.route_id = c.route_id
where {alias.column_name} {operator} {operand};
对于要加入的每个表,都需要一个join语句。 每个联接都通过在要联接的两个表上查找匹配的键来工作。 使用表别名a、b、c等保持查询简洁。 所有联接的结果都是一个大表,您可以用常规方式从中查询。 我不能从你的问题中确切地说出你想知道关于每一条总线的什么,所以内部或外部连接可能对你更有利。默认情况下,完成内部联接,这意味着只包括与所有查询条件匹配的行。广义地说,外部连接带来更多的东西。

我已经做到了

SELECT 
    bus_info.bus_no, route_detail.route_id, route_info.latitude, 
    route_info.longitude 
FROM 
    (bus_info 
INNER JOIN 
    route_detail ON bus_info.bus_id = route_detail.bus_id) 
INNER JOIN 
    route_info ON route_detail.route_id = route_info.route_id