SQL-分组、ID、名称

SQL-分组、ID、名称,sql,Sql,我想知道1c的答案应该是什么。在本网站上: 这显然不起作用,不管发生什么,ID和名称都不会显示。这里少了什么?谢谢。它会给您带来以下错误: sql:“组语句”中的未知列“名称” routetabel中没有name。 表结构包括: stops(id, name) route(num,company,pos, stop) 所以这个测验的答案是: SELECT s.id, s.name FROM route r, stops s WHERE r.stop= s.id and r.n

我想知道1c的答案应该是什么。在本网站上:


这显然不起作用,不管发生什么,ID和名称都不会显示。这里少了什么?谢谢。

它会给您带来以下错误:

sql:“组语句”中的未知列“名称”

route
tabel中没有
name
。 表结构包括:

stops(id, name)
route(num,company,pos, stop)
所以这个测验的答案是:

SELECT s.id, s.name
FROM   route r, stops s 
WHERE  r.stop= s.id 
and    r.num = 4 AND r.company = 'LRT'

您需要连接这些表,因为要返回的数据与过滤数据的表位于不同的表中。

这是有效的,不包括任何不必要的表连接。一个好的经验法则是使用
EXISTS
来验证表中不需要输出的值。否则,您将使用
JOIN

select s.id, s.name
from stops s
inner join route r
    on s.id = r.stop
where r.num= 4
    AND r.company= 'LRT'
SELECT stops.id, stops.name
FROM stops
WHERE EXISTS
(
    SELECT 1 FROM route 
    WHERE route.stop = stops.id AND num = '4' AND company = 'LRT'
)

为什么use存在一个连接?@wickedrunr这取决于查询,就像这些文章所说的,但是一般来说,如果您不使用我发现EXISTS的输出,那么它的性能会更好
select s.id, s.name
from stops s
inner join route r
    on s.id = r.stop
where r.num= 4
    AND r.company= 'LRT'
SELECT stops.id, stops.name
FROM stops
WHERE EXISTS
(
    SELECT 1 FROM route 
    WHERE route.stop = stops.id AND num = '4' AND company = 'LRT'
)