我有一个sql语句;
select linkscat.id, linkscat.category
from linkscat, contentlinks, links
where contentlinks.linksid = links.id
and contentlinks.contentid = @contentid
and links.linkscatid = linkscat.id
order by linkscat.category
和sql语句2从上面的语句中获取一个名为@linkscat的参数,它是'id';
select * from links where linkscatid= @linkscat
我在尝试使用许多sqldatareaders,嵌套转发器等时遇到了各种各样的麻烦,但如果所有的工作都可以在一个声明中完成,那会很棒吗?这是可能的,如果是这样,请您通过发布最终声明来帮助吗?
非常感谢,非常感谢任何帮助!
答案 0 :(得分:2)
您已经在使用联接,因此您只需将所需字段添加到select子句:
select linkscat.id, linkscat.category, links.*
from linkscat, contentlinks, links
where contentlinks.linksid = links.id
and contentlinks.contentid = @contentid
and links.linkscatid = linkscat.id
order by linkscat.category
虽然我只会说明必填字段而不是使用*
,但会使用显式连接:
select linkscat.id, linkscat.category, links.link, links.name
from linkscat
inner join links
on links.linkscatid = linkscat.id
inner join contentlinks
on contentlinks.linksid = links.id
where contentlinks.contentid = @contentid
order by linkscat.category
答案 1 :(得分:0)
怎么样
select * from links where linkscatid in (
select linkscat.id
from linkscat, contentlinks, links
where contentlinks.linksid = links.id
and contentlinks.contentid = @contentid
and links.linkscatid = linkscat.id
order by linkscat.category)
但我不确定你的表格格式。也许它应该是select * from links where id in ...
。
答案 2 :(得分:0)
您应该只需将链接表中所需的字段直接添加到查询中即可。我建议你使用链接表中的实际字段名称,而不是*。
select linkscat.id, linkscat.category, links.field_1, links.field_2, ...
from linkscat, contentlinks, links
where contentlinks.linksid = links.id
and contentlinks.contentid = @contentid
and links.linkscatid = linkscat.id
order by linkscat.category