这是我的SQL查询
select
tblUnderKategori.fldKategori,
tblUnderKategori.fldNavn,
tblUnderKategori.fldBillede,
tblKategori.fldId,
tblKategori.fldKategoriNavn
from
tblUnderKategori
inner join
tblKategori on tblUnderKategori.fldKategori=2
正如你所看到的那样,我需要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 />";
}
}
}
我只是无法找出问题,所以任何人都请帮忙
提前谢谢! :)
答案 0 :(得分: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。
答案 1 :(得分:1)
JOIN
加入两个表,您必须提供公共列。如果您还想过滤掉某些值,请在之后添加WHERE
子句。此外,如果您以后没有明确地想要阅读它们,则实际上您不必SELECT
用于匹配和加入的字段。
select
tblUnderKategori.fldNavn,
tblUnderKategori.fldBillede,
tblKategori.fldKategoriNavn
from tblUnderKategori join tblKategori
on tblUnderKategori.fldKategori = tblKategori.fldId
where
tblUnderKategori.fldKategori = 2
答案 2 :(得分: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
答案 3 :(得分: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
子句中应用过滤器。