我是SQL Server世界的新手。我有两个表格,例如
deleteNoticia(id){
this._apiNoticias.deleteNoticia(id)
.catch((err) => {
console.log(err);
});
this.cd.markForCheck();
this.ngOnInit();
}
和
gameDetails(gid, name, categoryid, companyid, year)
在gameSubDetails(id, name, delflag)
我已在gameDetails
和gameSubDetails
中存储了categoryid
的ID。
现在,如果我想根据companyid
中的条件搜索gameDetails
中的任何值,我怎样才能从gameDetails
和Category
获取Company
和gameSubDetails
的名称{1}}?
例如,我想搜索gameDetails
的所有值year = 2015
。
所以我把查询写成
select
g.gName, gsub.name as catid, gsub.name as compid
from
gameMaster g, gameSubDetails gsub
where
g.compid = gsub.id
and g.year = '2015'
但它只显示两者中的公司名称(catid,compid),但即使我尝试将另一个条件与c where g.compid = gsub.id and g.catid = gsub.id and .year='2015'
这样的条件放在一起,也不会返回任何记录。
请建议在这种情况下使用的最佳方法是什么。
注意:CategoryId
和CompanyID
存储在同一个表gameSubDetails
中,只是ID不同。
答案 0 :(得分:0)
您可以使用
等子选择select g.gName
, (select name from gameSubDetails where id = g.compid) as company
, (select name from gameSubDetails where id = g.catid) as category
from gameMaster g
where g.year='2015'
或加入
select g.gName,comp.name,cat.name
from gameMaster g
left join gameSubDetails comp on g.compid = comp.id
left join gameSubDetails cat on g.catid = cat.id
where g.year='2015'
答案 1 :(得分:0)
据我所知,您希望根据gameSubDetails
中的年份联接以获取gameDetails
的名称。具体细节将取决于SQL的特定风格,但这里只有一个:
SELECT gsub.name
FROM gameSubDetails as gsub JOIN gameDetails as gd ON gsub.id = gd.gid
WHERE gd.year = '2015'
这假设提到的gid
是id
中提到的游戏gameSubDetails
,虽然它从您的评论中听起来可能存储了两个与companyid和categoryid匹配的不同变量。如果是这种情况,请将gid
和id
替换为gameDetails
中与gameSubDetails
完全中的字段匹配的任何字段,而不仅仅是它