SELECT num, code, LN AS LabelName
FROM product
INNER JOIN link
ON product.seqno = link.seqno
INNER JOIN master
ON link.code = master.code
就像有没有其他方法来编写这个SQL?
DB layout is like this:
1)TABLE: product
num(key)
ln
seqno
2)TABLE: link
seqno(key)
code(key)
3)Table: master
code(key)
答案 0 :(得分:2)
您实际上并未使用主表
select num,code, LN as LabelName
from product
inner join link on product.seqno = link.seqno
当然,你可能已经从你的问题中解脱了这一部分 - 但那我们如何回答?
(注意,编写的查询可能会得到不同的结果,因为只返回主表中的代码。我相信这不是链接的原因)
答案 1 :(得分:1)
如上所述,查询将不会运行,因为列code
不明确 - 它可能来自master
表或link
表。
假设您没有使用master
表进行过滤,那么您可以从查询中删除它:
select product.num, link.code, product.LN as LabelName
from product inner join
link on product.seqno = link.seqno;
否则,查询和索引看起来很合理。
答案 2 :(得分:1)
product.seqno上有索引吗?
取决于表的大小,这可以显着加快查询速度。
答案 3 :(得分:1)
既然你谈到了 master-detail 这个ISAM数据库的典型概念并暗示了记录的手动管理,我猜你实际上只需要一组记录,而不是全部数据库读。根据您的需要,它会像
SELECT product.num, link.code, product.LN AS LabelName
FROM product , master , link
WHERE product.seqno = link.seqno
AND link.code = master.code
AND master.ID = 12345
甚至
SELECT product.num, link.code, product.LN AS LabelName
FROM product , master , link
WHERE product.seqno = link.seqno
AND link.code = 12345
既然你提到了Delphi,你应该用http://bobby-tables.com/delphi.html
中显示的参数替换12345