【发布时间】:2015-09-09 17:11:24
【问题描述】:
我正在 asp.net 中开发一个学校项目,我试图得到一个查询,结果是几行(这是正确的),只在一行上显示每个“结果”的结果,事情是该项目是一个销售游戏的网页。每个游戏都有几个开发者、流派(动作、FPS 等)、格式(数字或物理)、平台(ps3、ps4 等)和其他类似的设置。我对其进行了测试,它返回了几行,正如我之前所说的,它们可以合成为具有多个列重复的值的单行。
这里是查询:
SELECT
dbo.Jogos.NomeJogo AS Jogo,
dbo.Plataforma.Plataforma,
dbo.Jogos.disponibilidade,
dbo.Jogos.Preco AS Preço,
dbo.Jogos.Stock,
dbo.Desenvolvedora.NomeDesenvolvedora AS Desenvolvedora,
dbo.PEGI.PEGI,
dbo.Formato.Formato,
dbo.Genero.Genero,
dbo.Fornecedor.NomeFornecedor AS Fornecedor
FROM dbo.Jogos
INNER JOIN dbo.Desenvolvedora ON dbo.Jogos.IdDesenvolvedora = dbo.Desenvolvedora.IdDesenvolvedora
INNER JOIN dbo.PEGI ON dbo.Jogos.IdPegi = dbo.PEGI.IdPEGI
INNER JOIN dbo.GeneroJogo ON dbo.Jogos.IdJogo = dbo.GeneroJogo.IdJogo
INNER JOIN dbo.Genero ON dbo.GeneroJogo.IdGenero = dbo.Genero.IdGenero
INNER JOIN dbo.JogosFormato ON dbo.Jogos.IdJogo = dbo.JogosFormato.IdJogo
INNER JOIN dbo.Formato ON dbo.JogosFormato.IdFormato = dbo.Formato.IdFormato
INNER JOIN dbo.JogosFornecedor ON dbo.Jogos.IdJogo = dbo.JogosFornecedor.IdJogo
INNER JOIN dbo.Fornecedor ON dbo.JogosFornecedor.IdFornecedor = dbo.Fornecedor.IdFornecedor
INNER JOIN dbo.JogosPlataforma ON dbo.Jogos.IdJogo = dbo.JogosPlataforma.IdJogo
INNER JOIN dbo.Plataforma ON dbo.JogosPlataforma.IdPlataforma = dbo.Plataforma.IdPlataforma
查询返回同一游戏的几行,可以恢复到只有一个。
例如:
Game | Genre | Platform | Developper
___________________________________________________________
Assassin's Creed | Action | Ps3 | Ubisoft
Assassin's Creed | Stealth | Ps3 | Ubisoft
Assassin's Creed | Action | xBox 360 | Ubisoft
我想获得类似的东西:
Game | Genre | Platform | Developper
_____________________________________________________________________
Assassin's Creed | Action, Stealth | Ps3, Xbox 360 | Ubisoft
我正在寻求帮助,因为我不明白这怎么可能。
任何帮助将不胜感激。
P.S.:查询中的一些值是葡萄牙语。 我也检查了这个线程 How to use GROUP BY to concatenate strings in SQL Server? 但是这个只使用一个表,我从几个表中获取数据,所以我真的不知道如何在这个表中进行。
提前谢谢你 最好的祝福, 凯文
【问题讨论】:
-
您是否考虑过使用类似实体框架的 ORM?你所说的会做一个非常简单的 LINQ 查询,但是用直接 SQL 做起来有点 hacky,它喜欢把所有东西都放在漂亮的平面表中。
标签: c# sql asp.net sql-server