2

这是我的 SQL 查询

select 
    tblUnderKategori.fldKategori, 
    tblUnderKategori.fldNavn,  
    tblUnderKategori.fldBillede, 
    tblKategori.fldId, 
    tblKategori.fldKategoriNavn 
from 
    tblUnderKategori
inner join 
    tblKategori on tblUnderKategori.fldKategori=2    

正如你所看到的,我需要 my 的所有内容,fldKategori = 2它确实如此,但它会写出 x2 次。

这是我需要显示的地方的后端代码

katFac objKat = new katFac();
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["id"]))
    {
        foreach (DataRow item in objKat.GetUnderkatByKat(Convert.ToInt32(Request.QueryString["id"])).Rows)
        {
            litUnderkategori.Text += item["fldNavn"].ToString() + "<br /><br />";
        }
    }
}

我只是似乎无法弄清楚问题,所以请任何人帮忙

先感谢您!:)

4

4 回答 4

2

您在这里创建了一个 karthesian 产品,因为您的连接缺少实际将两个表连接在一起的条件。
尝试使用这个:

select  
    tblUnderKategori.fldKategori,  
    tblUnderKategori.fldNavn,   
    tblUnderKategori.fldBillede,  
    tblKategori.fldId,  
    tblKategori.fldKategoriNavn  
from  
    tblUnderKategori 
        inner join tblKategori  
            on tblUnderKategori.fldKategori = tblKategori.fldId
where tblUnderKategori.fldKategori=2  

这假定tblUnderKategori.fldKategori包含父类别的 ID。

于 2012-09-10T11:10:34.587 回答
1

AJOIN连接两个表,您必须提供公共列。如果您还想过滤掉某些值,请在WHERE之后添加一个子句。SELECT此外,如果您以后不想明确阅读它们,则实际上不必使用用于匹配和加入的字段。

select 
   tblUnderKategori.fldNavn,  
   tblUnderKategori.fldBillede, 
   tblKategori.fldKategoriNavn
from tblUnderKategori join tblKategori
   on tblUnderKategori.fldKategori = tblKategori.fldId
where
   tblUnderKategori.fldKategori = 2    
于 2012-09-10T11:11:05.193 回答
1

ON 子句指定表应该在哪个列上连接,条件应该包含在 WHERE 子句中。尝试这样的事情:

SELECT
   tblUnderKategori.fldKategori, 
   tblUnderKategori.fldNavn, 
   tblUnderKategori.fldBillede,
   tblKategori.fldId,        
   tblKategori.fldKategoriNavn    
FROM tblUnderKategori           
   INNER JOIN tblKategori    
   ON tblUnderKategori.[some key column] = tblKategori.[corresponding key column]        
WHERE tblUnderKategori.fldKategori=2 
于 2012-09-10T11:12:14.383 回答
0

您的 SQL 语句缺少JOIN表上的字段。它应该是这样的:

select u.fldKategori, 
    u.fldNavn,  
    u.fldBillede, 
    k.fldId, 
    k.fldKategoriNavn 
from tblUnderKategori u
inner join tblKategori k
  on u.fldKategori = k.fldId
where u.fldKategori=2   

然后,您将在WHERE子句中应用您的过滤器。

于 2012-09-10T11:13:28.650 回答