标签: sql

具有多个连接的SQLite查询

我相信这只是一个简单的连接statemnet.我最近没有使用SQL,似乎忘记了如何做到这一点.我所拥有的是一个列中包含少量列的项目,它引用另一个表格作为该字段的名称.像这样:

id, name, effect1, effect2, effect3, effect4
Run Code Online (Sandbox Code Playgroud)

效果可以引用另一个表只拥有a,idname列.我正在尝试做的是运行一个查询,为每个效果提取这些名称.

就像是:

SELECT i.name,e.name AS effect1, e.name AS effect2, e.name AS effect3, 
       e.name AS effect4 
FROM item i, effects e 
WHERE i.effect1 = e.name 
 AND i.effect2 = e.name 
 AND i.effect3 = e.name 
 AND i.effect4 = e.name
Run Code Online (Sandbox Code Playgroud)

所以,假设我有一个具有如下值的项目:

Toast, 1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)

效果是:

1, burned
2, untoasted
3, wet
4, texas 
Run Code Online (Sandbox Code Playgroud)

我想要它显示 toast, burned, untoasted, wet, texas

和想法?

更新:

Table items
id, name, weight, value, effect1,effect2,effect3,effect4

Table …
Run Code Online (Sandbox Code Playgroud)

sql sqlite join

11
推荐指数
1
解决办法
2万
查看次数

如何在jOOQ中的同一个表上写LEFT OUTER JOIN?

如何使用jOOQ编写以下SQL?

SELECT *
FROM food_db_schema.tblCategory AS t1
LEFT OUTER JOIN food_db_schema.tblCategory AS t2 ON t1.category_id = t2.parent_id
WHERE t2.parent_id IS NULL
AND t1.heartbeat = "ALIVE";
Run Code Online (Sandbox Code Playgroud)

数据库是mySQL

mysql sql jooq

11
推荐指数
2
解决办法
3980
查看次数

使用PHP从SQL中选择Random Row

我想使用php从我的SQL表中请求5个随机行.例如,我需要:

mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
Run Code Online (Sandbox Code Playgroud)

php mysql sql

11
推荐指数
2
解决办法
3万
查看次数

使用WHERE子句检查一个SQL查询内的数组中的值

我想知道这在sql中几乎是可能的(使用php作为服务器端),其中你有一个值数组(数字),你尝试根据该数组中的值检索数据.

我有一个SQL表:

posts(
    id int(11) primary key,
    posts varchar(140),
    user_id int(11) foreign key
);
Run Code Online (Sandbox Code Playgroud)

我现在写一个查询来检索'帖子':

$query="SELECT * FROM posts WHERE user_id=(**Array of select user_id's**)";
Run Code Online (Sandbox Code Playgroud)

是否有任何sql内置函数来检查数组中的值?或者我应该使用PHP吗?

我实际上正在尝试实现我们关注的人员帖子的推特模型.

php mysql sql

11
推荐指数
2
解决办法
6万
查看次数

选择所有元素满足条件的分组

我在使用MySQL查询时遇到了一些麻烦.

我想从表中选择所有元素,从某个列进行分组,但只检索组中所有元素与WHERE子句匹配的元素.

例如,我有一个名为"pets"的表,有3列:

Id| animal | name
1 | dog    | marge
2 | dog    | homer
3 | cat    | marge
4 | cat    | lenny
5 | rabbit | homer
5 | rabbit | carl
6 | rabbit | marge
Run Code Online (Sandbox Code Playgroud)

而且我想挑选他所有小组成员都有名字的所有动物('本垒打','巴特','marge','lisa','maggie')

如果你无法理解我的问题,请告诉我.谢谢!

mysql sql group-by

11
推荐指数
2
解决办法
4908
查看次数

mysql选择不同的行到逗号分隔的列表列中

我目前有一些带回标签的sql.他们应该有不同的ID,但他们不....所以我目前的数据是这样的:

Microsoft | GGG | 1 | 167
Microsoft | GGG | 1 | 2
Microsoft | GGG | 1 | 1
Run Code Online (Sandbox Code Playgroud)

我想做的是只返回一行,最后一列连接成一个分隔列表,如:

Microsoft | GGG | 1 | 167, 2, 1
Run Code Online (Sandbox Code Playgroud)

我正在使用mySQL 5.

mysql sql

11
推荐指数
1
解决办法
1万
查看次数

允许存储过程使用SQL Server 2012中的证书从系统表中进行选择

我正在尝试运行尝试从系统表中选择的存储过程时遇到与权限相关的问题.基本上我试图通过直接从sys.dm_tran_current_transaction表中获取我需要的数据来解决SQL Server 2012中sp_bindtoken系统存储过程的弃用问题.

我发现的一个解决方案是:

  • 创建证书
  • 从证书创建用户/登录
  • 授予用户VIEW SERVER STATE权限
  • 使用证书对存储过程进行签名
  • 执行存储过程,该存储过程在刚刚创建的用户的上下文中运行

这种方法似乎在SQL Server 2008 R2中运行良好.但是在SQL Server 2012中,即使脚本看起来运行正常,在运行时,存储过程也会在尝试从上面的系统表中进行选择时失败并显示权限错误.

我目前的脚本看起来有点像这样:

USE OurDatabase
GO

CREATE CERTIFICATE OurDatabaseProcCert
FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

USE master
GO

CREATE CERTIFICATE OurDatabaseProcCert
    FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
    ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
    DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

CREATE LOGIN OurDatabaseServerLogin
    FROM CERTIFICATE OurDatabaseProcCert …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures database-permissions sql-server-2012

11
推荐指数
1
解决办法
1057
查看次数

SQL GROUP BY字段在所有情况下都是可交换的吗?

在简单查询中,GROUP BY字段的顺序与最终结果没有区别(忽略开发人员的易读性).

EG:SELECT COUNT(*) FROM People GROUP BY Age, Gender将产生与GROUP BY字段被翻转相同的结果.

一般来说,在什么条件下,GROUP BY字段的这种明显的可交换属性会崩溃?

我在这里寻找一般规则(EG:"任何包含依赖于其中一个分组字段的子表达式的表达式")

我很难想出一个关于排序重要的例子 - 但我的直觉告诉我它在某些情况下确实如此.

sql database

11
推荐指数
1
解决办法
751
查看次数

执行SQL查询时显示进度条

我想在从SQL数据库中读取数据时通知用户,我决定使用进度条创建一个表单,但它不起作用 - 可能是因为需要一个线程.我想以编程方式创建表单

        ProgressBar pb = new ProgressBar();

        pb.MarqueeAnimationSpeed = 30;
        pb.Style = ProgressBarStyle.Marquee;
        pb.Dock = DockStyle.Fill;

        progressForm.ClientSize = new Size(200, 50);
        progressForm.FormBorderStyle = FormBorderStyle.FixedDialog;
        progressForm.StartPosition = FormStartPosition.CenterScreen;
        progressForm.Controls.Add(pb);
        progressForm.ControlBox = false;
        progressForm.TopMost = true;

        progressForm.Show();  
        //do data processes here (all queries and executes)
        progressForm.close();
Run Code Online (Sandbox Code Playgroud)

如何修改上面的代码以实现我的既定目标?

编辑:顺便说一句,我想在我的项目中的每个数据函数中使用此进度条表单.例如:fillGrid,runQuery ..

@Will非常感谢你的回答.我的意思是我如何使用类的函数,例如我的gridFill函数在该连接类中:

 class ConnectionClass
    {
       public static SqlConnection connection = new SqlConnection();

    public string sorgu;
    public static string server;
    public static string userId;
    public static string catalog;
    public static string password;
    public static …
Run Code Online (Sandbox Code Playgroud)

c# sql multithreading backgroundworker progress-bar

11
推荐指数
1
解决办法
3万
查看次数

处理SQL命令并关闭连接

到目前为止,我总是使用类似的结构从DB获取数据并填充DataTable

public static DataTable GetByID(int testID)
        {
        DataTable table = new DataTable();
        string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";

        using (SqlConnection cn = new SqlConnection(Configuration.DefaultConnectionString))
        {
            SqlCommand cmd = new SqlCommand(query, cn);
            cmd.Parameters.Add("@testID", SqlDbType.Int).Value = testID;

            cn.Open();
            table.Load(cmd.ExecuteReader());
        }

        return table;
    }
Run Code Online (Sandbox Code Playgroud)

现在我在构建分析中看到了一些警告:

TestService.cs(37):CA2000:Microsoft.Reliability:在方法'TestService.GetByID(int)'中,对象'table'不沿所有异常路径放置.在对对象'table'的所有引用都超出范围之前,调用System.IDisposable.Dispose.

TestService.cs(42):CA2000:Microsoft.Reliability:在方法'TestService.GetByID(int)'中,在对对象'cmd'的所有引用都超出范围之前,调用对象'cmd'上的System.IDisposable.Dispose.

我应该更改我的代码吗?

    public static DataTable GetByID(int testID)
    {
        DataTable table = new DataTable();
        string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";

        using (SqlConnection cn = …
Run Code Online (Sandbox Code Playgroud)

c# sql dispose

11
推荐指数
1
解决办法
5541
查看次数