棘手的数据库查询

时间:2015-04-25 12:16:14

标签: foxpro

DBMS Foxpro 2.6 for DOS。 假设它有一个由两个表FILM和COPY_MOV组成的电影库数据库。 表格FILM以下列的Soto id_film,title,director,year 表COPY_MOV以下列的Soto: id_cpy,id_film,type_media,format

两个表都在字段上编入索引:id_film,id_copy。

我们需要查找所有未发布的电影。我写了以下查询SQL:

select * from FILM where ID_FILM not in (select ID_FILM from COPY_MOV)

可以实现相同的,只有操作员SEEK foxpro?

1 个答案:

答案 0 :(得分:1)

如果要在Where过滤器中使用Seek()函数:

CREATE CURSOR film (id_film I)
INSERT INTO film VALUES (1)
INSERT INTO film VALUES (2)
INSERT INTO film VALUES (3)
INSERT INTO film VALUES (4)
INSERT INTO film VALUES (5)
CREATE CURSOR copy_mov (id_film I)
INDEX on id_film TAG id_film
INSERT INTO copy_mov VALUES (2)
INSERT INTO copy_mov VALUES (5)

SELECT * FROM film WHERE NOT SEEK(id_film, "copy_mov")

如果您想完全避免使用SQL Select

CREATE CURSOR result (id_film I)
SELECT film
SCAN FOR NOT SEEK(id_film, "copy_mov")
    INSERT INTO result VALUES (film.id_film)
ENDSCAN
SELECT result
BROWSE

或许您只想Browse For

SELECT film
BROWSE FOR NOT SEEK(id_film, "copy_mov")