我有这三个数据库表
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表中的数据库为同一个总线分配了两个路由然后我需要上面三个表中的列
bus_id,bus_no,route_id,纬度,经度
答案 0 :(得分:0)
确切的语法取决于您使用的数据库。要在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};
您希望加入的每个表都需要一个连接语句。 每个连接通过在要连接的两个表上查找匹配键来工作。 使用表别名(a,b,c等)来保持查询简洁。 所有联接的结果是一个大表,您可以以正常方式查询。 我无法从您的问题中准确地告诉您关于每辆公交车的信息,因此内部或外部连接对您来说可能更好。默认情况下,内部联接已完成,这意味着仅包含符合所有查询条件的行。从广义上讲,外部联接带来了更多的东西。
答案 1 :(得分:0)
我做到了.....
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