小编Sky*_*ell的帖子

使用UNION创建有效的查询

我正在尝试获取一个国家的所有公民的列表,并将它们列在一个包含3行的表中.最后一行显示"是"或"否",具体取决于该人是否出生在某个城市.

我所做的是创建两个查询:第一个查询获得在城市出生的所有公民,第二个查询获得所有未在城市出生的公民.

然后我就做了一个UNION.

查询运行,我认为结果看起来不错.

但我想知道,这是形成这样的查询的最佳方式吗?

谢谢

--all citizens who were born in CityID = 5 who is in the USA
SELECT DISTINCT(CountryCitizenID), Country, 'YES' As Resident
FROM DT_Country_CitizenS dtu
INNER JOIN FT_City fte ON dtu.CountryCitizenID = fte.CitizenID
WHERE cityID = 5
AND Country = 'USA'

UNION

--all Citizens who were not born in CityID = 5 who is in the USA
SELECT  DISTINCT(CountryCitizenID), Country, 'NO' As Resident  
FROM DT_Country_CitizenS dtu 
WHERE NOT EXISTS (
    SELECT CitizenID 
    FROM FT_City fte 
    WHERE …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

0
推荐指数
1
解决办法
82
查看次数

Json没有正确地反序列化到类中

我正在尝试将数组转换为类.所以我得到了数组,然后使用JsonConvert对其进行序列化,如下所示:

var gameResponse = GetGame(Id);
var returnedArray = gameResponse.Result.Results;
var json = JsonConvert.SerializeObject(returnedArray);
var result = JsonConvert.DeserializeObject<T>(json);
Run Code Online (Sandbox Code Playgroud)

我可以在Visual Studio调试模式下看到这个结果,"json"看起来像这样:

[
  { 
    \"CreatorId\":\"41c5321e-6f37-4d4f-92f7-fc381be0fc62\",
    \"GameId\": \"3938\",
    \"Type\": \"2\",
    \"CreateDate\": \"1/2/2017\",
    \"TeamId\": \"2394\",
    \"LeaderId\": \"34922\",
    \"CountryCode\": \"23\",
    \"SalesRank\": \"4\",
    \"Title\": \"Space Shooter Max\",
    \"TeamName\": \"The One\",
    \"TeamMembers\" : \"4\"
  }
]
Run Code Online (Sandbox Code Playgroud)

但是,当代码命中下一行时:

var result = JsonConvert.DeserializeObject<T>(json);  // In this case, <T> is <Game>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

JsonSerializationException:无法将当前JSON数组(例如[1,2,3])反序列化为类型'GameLabs.Game',因为该类型需要JSON对象(例如{"name":"value"})才能正确反序列化.

GameLabs.Game是一个看起来像这样的类:

public sealed class Game
{
    public string CreatorId { get; set; }
    public string GameId { get; …
Run Code Online (Sandbox Code Playgroud)

c# json json.net .net-core

-1
推荐指数
1
解决办法
53
查看次数

如何修改内部联接,使其每个项目仅返回 1 行?

我有一个表,hs_book其中有一列名为GENRE_ID

我从一个名为的表中获取该类型的描述GENRE

我的列子查询Genre

SELECT *,
    Genre = (
        SELECT DESCRIPTION
        FROM GENRE
        WHERE GENRE_ID = (
            SELECT TOP 1 GENRE_ID 
            FROM BOOK_GENRES
            WHERE BOOK_ID = hs_book.BOOK_ID
            )
    )
FROM hs_book
Run Code Online (Sandbox Code Playgroud)

当我执行此查询时,我得到 525 本书(这是正确的)。

应高级 DBA 的要求,我尝试将其转换为 JOIN,这样我就不需要子查询,所以我这样做了:

SELECT * FROM hs_book hsb
INNER JOIN BOOK_GENRES bg ON hsb.BOOK_ID = bg.BOOK_ID
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到了 541 个结果,比子查询多了 16 个结果。

经过查资料,我发现有些书有多个GENRE_IDs.

有没有办法修改我的加入,以便我只为每本书返回一种类型?

t-sql sql-server join

-1
推荐指数
1
解决办法
59
查看次数

即使我正确创建了变量,尝试从类创建类型也会导致错误

我正在尝试实现我在教程中找到的电子邮件系统。

我的EmailMessage课是这样的:

public class EmailMessage
{
    public EmailMessage()
    {
        ToAddresses = new List<EmailAddress>();
    }

    public List<EmailAddress> ToAddresses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这个EmailAddress类看起来像这样:

public class EmailAddress
{
    public string Name { get; set; }
    public string Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以现在我正在尝试构建一个测试电子邮件。

我创建了一个测试“toAddress”:

EmailAddress toAddress = new EmailAddress()
{
    Name = "Fred Flintsone",
    Address = "cmt34@pitt.edu"
};
Run Code Online (Sandbox Code Playgroud)

但是当尝试像这样构建测试 EmailMessage 时:

var message = new EmailMessage()
{
    ToAddresses = toAddress,
    Content = "Hey this is a …
Run Code Online (Sandbox Code Playgroud)

c# list asp.net-core

-2
推荐指数
1
解决办法
38
查看次数

返回基于对象的布尔属性的布尔值

所以我有这个布尔方法,它根据两个对象的布尔属性返回它的结果.

我传入两个代表业务分支状态的对象.一个州是暴风雨前的分支状态,另一个州是暴风雨后的状态.

一些分支机构可能在暴风雨之前有一个重建基金,有些则没有.所以这会检查.

这是它的样子:

    public override bool SendUpdateNotifcation(AsianBranch beforeStorm, AsianBranch afterStorm)
    {
        return beforeStorm.HasRebuildingFund && afterStorm.HasRebuildingFund;
    }
Run Code Online (Sandbox Code Playgroud)

HasRebuildindFund属性是一个布尔值.

问题是,这个方法总是返回true,如果两个状态都为true,false或者一个是真,另一个是假则无关紧要.

我的逻辑完全错了吗?

谢谢

c# c#-4.0 .net-4.5

-4
推荐指数
1
解决办法
49
查看次数

循环时的主程序

我有一个Python程序,它使用键盘输入来运行某些命令.

我在一个主程序循环中设置了所有内容,但现在我想知道,我甚至需要一个主循环吗?

这就是我的意思:

mainProgramLoop = 1   
while mainProgramLoop == 1:

    print ("\nType in the command. ")

    keyBoardInput= input("command:")

    if keyBoardInput == "a":
       #do this
    elif keyBoardInput == "b":
       #do this
Run Code Online (Sandbox Code Playgroud)

我是否真的需要循环?

谢谢!

python python-3.x

-7
推荐指数
1
解决办法
1113
查看次数

标签 统计

c# ×3

sql-server ×2

t-sql ×2

.net-4.5 ×1

.net-core ×1

asp.net-core ×1

c#-4.0 ×1

join ×1

json ×1

json.net ×1

list ×1

python ×1

python-3.x ×1

sql ×1