2010-04-19 43 views
0

我有一個sql語句;將這2個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,嵌套的中繼器等,但是這將是巨大的,如果所有的工作可能在一個語句來完成?這是可能的,如果可以的話,請你可以通過發佈最終聲明來提供幫助嗎?

非常感謝,任何幫助非常感謝!

回答

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 
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 ...

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 
相關問題