查询表达式'tbl_employee.emp_id = tbl_netpay.emp_id中的语法错误(缺少运算符)INNER JOIN tbl_gross ON tbl_employee.emp_id = tbl_gross.emp_ID INNER JOIN tbl_tax ON tbl_employee.emp_id - tbl_tax.emp_ID'.
SELECT tbl_employee.emp_ID,
tbl_employee.emp_name,
tbl_gross.BasicSalary,
tbl_gross.totalOT,
tbl_netpay.totalGross,
tbl_tax.totalLate,
tbl_tax.allowance,
tbl_tax.SSS,
tbl_tax.PhilHealth,
tbl_tax.GSIS,
tbl_tax.HDMF,
tbl_netpay.totalDeduc,
tbl_netpay.emp_ti,
tbl_netpay.emp_wt,
tbl_netpay.emp_np
FROM tbl_employee
INNER JOIN tbl_netpay ON tbl_employee.emp_id = tbl_netpay.emp_id
INNER JOIN tbl_gross ON tbl_employee.emp_id = tbl_gross.emp_ID
INNER JOIN tbl_tax ON tbl_employee.emp_id = tbl_tax.emp_ID;
Run Code Online (Sandbox Code Playgroud)
我总是得到上面的错误.
假设我有以下T-SQL代码:
SELECT * FROM Foo f
INNER JOIN Bar b ON b.BarId = f.BarId;
WHERE b.IsApproved = 1;
Run Code Online (Sandbox Code Playgroud)
以下一行也返回相同的行集:
SELECT * FROM Foo f
INNER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
Run Code Online (Sandbox Code Playgroud)
这可能不是这里最好的案例样本,但这两者之间是否有任何性能差异?
设T1和T2是DataTable以下字段
T1(CustID, ColX, ColY)
T2(CustID, ColZ)
Run Code Online (Sandbox Code Playgroud)
我需要联合表
TJ (CustID, ColX, ColY, ColZ)
Run Code Online (Sandbox Code Playgroud)
如何在C#代码中以简单的方式完成此操作?谢谢.
嘿所有我试图找出如何使用以下查询插入新记录:
SELECT user.id, user.name, user.username, user.email,
IF(user.opted_in = 0, 'NO', 'YES') AS optedIn
FROM
user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
ORDER BY user.id;
Run Code Online (Sandbox Code Playgroud)
INSERT到目前为止,我的查询是:
INSERT INTO user
SELECT *
FROM user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id;
Run Code Online (Sandbox Code Playgroud)
但是,我不确定VALUE('','','','', etc etc)在使用左连接和内连接时该怎么做.
所以我要做的是:
User 表:
id | name | username | password | OptIn
--------------------------------------------------------------------
562 Bob Barker bBarker BBarker@priceisright.com 1
Run Code Online (Sandbox Code Playgroud)
还有user_permission桌子
user_id | Permission_id
-------------------------
562 4
Run Code Online (Sandbox Code Playgroud)
更新 这样吗? …
我有一个场景,我有点卡住了.假设我有一个关于颜色的调查,我有一个用于颜色数据的表,另一个用于人们的答案.
tbColors
color_code , color_name
1 , 'blue'
2 , 'green'
3 , 'yellow'
4 , 'red'
Run Code Online (Sandbox Code Playgroud)
tbAnswers
answer_id , favorite_color , least_favorite_color , color_im_allergic_to
1 , 1 , 2 3
2 , 3 , 1 4
3 , 1 , 1 2
4 , 2 , 3 4
Run Code Online (Sandbox Code Playgroud)
为了显示,我想编写一个SELECT,它显示了答案表,但使用了tbColors中的color_name列.
我理解"最愚蠢"的方法:在FROM部分中命名tbColors三次,为每个要替换的列使用不同的别名.
一个非愚蠢的方式怎么样?
我有三个表,A,B,C,其中A是多对一B,B是多对一C.我想要一个A中所有C的列表.
我的表是这样的:A [id,valueA,lookupB],B [id,valueB,lookupC],C [id,valueC].我用两个嵌套的SELECT编写了一个查询,但我想知道是否有可能以某种方式使用DISTINCT进行INNER JOIN.
SELECT valueC
FROM C
INNER JOIN
(
SELECT DISTINCT lookupC
FROM B INNER JOIN
(
SELECT DISTINCT lookupB
FROM A
)
A2 ON B.id = A2.lookupB
)
B2 ON C.id = B2.lookupC
Run Code Online (Sandbox Code Playgroud)
编辑:表格相当大,A是500k行,B是10k行,C是100行,所以如果我做一个基本的内部连接并最后使用DISTINCT,有很多不必要的信息,如下所示:
SELECT DISTINCT valueC
FROM
C INNER JOIN B on C.id = B.lookupB
INNER JOIN A on B.id = A.lookupB
Run Code Online (Sandbox Code Playgroud)
这非常非常慢(比我上面嵌套的SELECT慢一倍.
有人可以帮我写一个像这样的scernerio sql:
Table 1
2 columns: ID, Name
Table 2
2 columns: ID, Name
Run Code Online (Sandbox Code Playgroud)
我想要一个查询来显示表1中不在表2中的名称.因此,过滤掉表2中表2中的所有名称是结果查询.使用ID进行过滤而不是名称.
这将帮助我做我想做的事情.提前致谢
我有以下查询:
SELECT TOP 25 CLIENT_ID_MD5, COUNT(CLIENT_ID_MD5) TOTAL
FROM dbo.amazonlogs
GROUP BY CLIENT_ID_MD5
ORDER BY COUNT(*) DESC;
Run Code Online (Sandbox Code Playgroud)
哪个回报:
283fe255cbc25c804eb0c05f84ee5d52 864458
879100cf8aa8b993a8c53f0137a3a176 126122
06c181de7f35ee039fec84579e82883d 88719
69ffb6c6fd5f52de0d5535ce56286671 68863
703441aa63c0ac1f39fe9e4a4cc8239a 47434
3fd023e7b2047e78c6742e2fc5b66fce 45350
a8b72ca65ba2440e8e4028a832ec2160 39524
...
Run Code Online (Sandbox Code Playgroud)
我想使用此查询中返回的MD5检索相应的客户端名称(FIRM),因此行可能如下所示:
879100cf8aa8b993a8c53f0137a3a176 126122 Burger King
Run Code Online (Sandbox Code Playgroud)
所以我提出了这个问题:
SELECT a.CLIENT_ID_MD5, COUNT(a.CLIENT_ID_MD5) TOTAL, c.FIRM
FROM dbo.amazonlogs a
INNER JOIN dbo.customers c
ON c.CLIENT_ID_MD5 = a.CLIENT_ID_MD5
GROUP BY a.CLIENT_ID_MD5, c.FIRM
ORDER BY COUNT(*) DESC;
Run Code Online (Sandbox Code Playgroud)
这返回类似于:
879100cf8aa8b993a8c53f0137a3a176 126122 Burger King
06c181de7f35ee039fec84579e82883d 88719 McDonalds
703441aa63c0ac1f39fe9e4a4cc8239a 47434 Wendy's
3fd023e7b2047e78c6742e2fc5b66fce 45350 Tim Horton's
Run Code Online (Sandbox Code Playgroud)
哪个有效,除非我需要为c.FIRM返回一个空值,如果给定的MD5没有相应的FIRM.例如:
879100cf8aa8b993a8c53f0137a3a176 126122 …Run Code Online (Sandbox Code Playgroud) 所以我有四张桌子.每个表都有一个前一个表id的id.所以我在点击表中有一个ID和一个ID来自它的广告.在广告表中,它具有广告ID和来自广告系列的ID.所以这是一个例子.
Table4 -
id company table_id
11 hp 20
12 apple 23
13 kohls 26
14 target 21
15 borders 28
Table3 -
id value table2_id
21 ks 53
22 al 54
23 tx 53
24 fl 55
25 co 51
Table2 -
id value table1_id
51 ks 34
52 al 34
53 tx 33
54 fl 35
55 co 31
Table1 -
id value
31 ks
32 al
33 tx
34 fl
35 co
Run Code Online (Sandbox Code Playgroud)
因此,为了找出表4中的值来自何处,我需要回顾每个表并检查它们具有哪个ID.基本上,我想知道表1中的哪些值与表4中的值相关联.
表4作为网站访问者和表1作为互联网广告.我想知道哪些访问者来自哪些广告.不幸的是,数据已设置好,因此我只能从访问者到源代码,广告组再到广告.那有意义吗?
无论如何,我想知道是否使用4个内部连接是这个问题的最佳策略,还是有一些我不知道的更简单的mysql解决方案.
今天我在SQL Server中了解了一个叫做的东西INNER LOOP JOIN.
这是什么意思?(谷歌没有帮助..或者我应该说......关于它的博客文章有点......技术性,并且让我大吃一惊).
此外,使用INNER LOOP JOIN超标准的一些常见场景是什么好主意INNER JOIN?
inner-join ×10
sql ×6
join ×5
sql-server ×4
mysql ×2
t-sql ×2
c# ×1
datatable ×1
distinct ×1
join-hints ×1
left-join ×1
ms-access ×1
oracle ×1
outer-join ×1