我必须得到所有job_titles和在那里工作的人的工资总和的清单......
我用这个得到了:
SELECT j.job_title, SUM(e.salary)
FROM jobs j LEFT JOIN employees e ON e.job_id = j.job_id
GROUP BY j.job_title;
Run Code Online (Sandbox Code Playgroud)
好的,但现在我得到同样的名单,但也考虑到城市......
它不起作用......:/
SELECT j.job_title, SUM(e.salary), d.department_id, l.city
FROM departments d LEFT JOIN employees e ON e.department_id = d.department_id LEFT JOIN locations l
ON l.location_id = d.location_id LEFT JOIN jobs j ON e.job_id = j.job_id
GROUP BY l.city;
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
如何在shell中加入2个文件,例如:
file1 -
server1 monthly 25
server2 monthly 24
server3 daily 21
server4 weekly 7
server5 weekly 7
Run Code Online (Sandbox Code Playgroud)
file2 -
server1 monthly 5
server2 monthly 4
server3 daily 1
server4 weekly 2
Run Code Online (Sandbox Code Playgroud)
你能帮助我得到像这样的输出:
server1 monthly 25 5
server2 monthly 24 4
server3 daily 21 1
server4 weekly 7 2
server5 weekly 7 0
Run Code Online (Sandbox Code Playgroud) 我收到这个错误:
您的SQL语法有错误; 检查与你的MySQL服务器版本相对应的手册,以便在''JOIN`-- shirt`link```-- shirt``````````````````````````````````````````````````````````````````````````
我现在已经梳理了近半个小时,无法弄明白.有人可以指出我吗?这是代码.
SELECT
`shirts`.`shirt_name`,
`shirts`.`men` AS `main_photo`,
GROUP_CONCAT ( `shirt_sizes`.`size_name` ) AS `sizes`
FROM
`shirts`
JOIN
`shirts_link` ON `shirts_link`.`shirt_id`=`shirts`.`id`
JOIN
`shirt_sizes` ON `shirt_sizes`.`id`=`shirts_link`.`size_id`
JOIN
`shirt_prices` ON `shirt_prices`.`id`=`shirts_link`.`price_id`
WHERE `men`!=''
GROUP BY
`shirt_prices`.`price_cat`
Run Code Online (Sandbox Code Playgroud)
如果问题比这个脚本更深入,这里是我试图联系在一起的其他表.
衬衫表
CREATE TABLE shirts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
shirt_name VARCHAR(20) NOT NULL,
men VARCHAR(10) NULL,
women VARCHAR(10) NULL,
boys VARCHAR(10) NULL,
girls VARCHAR(10) NULL,
babies VARCHAR(10) NULL,
)ENGINE=INNODB;
INSERT INTO shirts(shirt_name,men,women,boys,girls,babies) VALUES
('Crewneck Tee','me_crn','wo_crn','bo_crn','gi_crn','ba_crn'),
('V-Neck Tee','me_vnc','wo_vnc','','',''),
('Scoop Neck …
Run Code Online (Sandbox Code Playgroud) 我想加入表数据而不增加no.的行.
并且这两个表在没有主键的情况下连接,只有在两者中共有的列的帮助下,没有其他列可以用于结果,因为没有其他列完全相关.
表格1
id1(pk) name country clm_id
1 abc 3 23
2 abc 4 23
Run Code Online (Sandbox Code Playgroud)
表2
id2(pk) city state clm_id
1 cdv 5 23
2 sdc 5 23
Run Code Online (Sandbox Code Playgroud)
我想通过clm_id加入这些表,但它给了我4行, 我想要
id1 name country clm_id id2 city state
1 abc 3 23 1 cdv 5
2 abc 4 23 2 sdc 5
Run Code Online (Sandbox Code Playgroud)
但我得到了
id1 name country clm_id id2 city state
1 abc 3 23 1 cdv 5
1 abc 3 23 2 sdc 5
2 abc 4 23 …
Run Code Online (Sandbox Code Playgroud) 我需要帮助来编写一个简单的程序.让我解释一下我要做的事情.
我有3张桌子
我想创建一个程序,它返回一个tJobOffer列表,其中包含此tJobOffer的不同状态统计信息.tApplicationStatus链接到链接到tJobOffer的tApplication.申请可以是候选/接受/拒绝/忽略/ ......
我创建了这个查询:
SELECT
[T].[JobOfferId],
[T].[JobOfferTitle],
COUNT([A].[ApplicationId]) AS [CandidateCount]
FROM [tJobOffer] AS [T]
LEFT JOIN [tApplication] AS [A]
INNER JOIN [tApplicationStatus] AS [S]
ON [S].[ApplicationStatusId] = [A].[ApplicationStatusId]
AND [S].[ApplicationStatusTechnicalName] = 'CANDIDATE'
ON [A].[JobOfferId] = [T].[JobOfferId]
GROUP BY
[T].[JobOfferId],
[T].[JobOfferTitle]
ORDER BY [T].[JobOfferTitle] ;
Run Code Online (Sandbox Code Playgroud)
结果是
> 52ED7C67-21E1-49BB-A1F8-0601E6EED1EA Announce a 0
> F26B228D-0C81-4DA8-A287-F8F997CC1F9C Announce b 0
> 9DA60B23-F113-4C7F-9707-2B90C1556D5D Announce c 2
> 258E11A7-79C1-47B6-8C61-413AA54E2360 Announce d 0
> DA582383-5DF4-4E1D-837C-382371BDEF57 Announce e 1
Run Code Online (Sandbox Code Playgroud)
结果是正确的.我得到了我的tJoboffers与候选人的统计数据.我有两个候选人宣布c和一个候选人宣布e.如果我将字符串'CANDIDATE'更改为'ACCEPTED'或'REFUSED',我可以获得有关这些状态的统计信息.是否可以在一个请求中获取所有内容?
就像是
> 52ED7C67-21E1-49BB-A1F8-0601E6EED1EA Announce …
Run Code Online (Sandbox Code Playgroud) 我有一个表Users
连接多次,如下所示:
所以,当我从用户那里请求Name
一个Request
名字的时候,我想要两个,这是我第一次面对这种情况而且我不知道如何从SQL中做到这一点.
查询可能如下:
SELECT Name as Originator, Name as Requestee FROM View ... JOIN ... WHERE Id = 123
Run Code Online (Sandbox Code Playgroud) 如何SUM
用查询JOIN
表获取查询,我有两个表,我的表是laporan
和laporan_pengeluaran
.
表laporan
id name shell
9 loli 12000
10 ardi 24000
11 dian 5500
Run Code Online (Sandbox Code Playgroud)
table laporan_pengeluaran
id laporan_id harga
1 9 15000
2 9 29000
3 10 7500
4 10 5000
5 11 3000
6 11 3000
Run Code Online (Sandbox Code Playgroud)
我的问题,如何使用连接表获取SUM,在表laporan中按id/name分组,所以我想获得如下结果:
id name shell harga
9 loli 12000 44000
10 ardi 24000 12500
11 dian 5500 6000
Run Code Online (Sandbox Code Playgroud)
谢谢.
是LEFT JOIN
在访问相同的LEFT OUTER JOIN
在SQL?这两个程序中的连接等价物是什么?
我使用MySQL数据库来管理组织的捐款.捐赠者可以捐赠多份捐款.因此,我有两个表:donators
包含有关捐赠者的信息,并donations
包含有关捐赠时间和金额的信息.两个表都通过a连接donatorID
.
我想读出有关每个不同捐赠者的信息.该清单应按上次捐赠日期排序.我想出了下面的代码,但是它使用了第一次捐赠的日期而不是最后一次捐赠.
如何为每位捐赠者使用最新的捐赠日期?
SELECT
DISTINCT(`donators`.`name`),
`donators`.`city`,
`donators`.`country`,
`donators`.`website`
FROM
`donators`
INNER JOIN
`donations`
ON
`donators`.`donatorID` = `donations`.`donatorID`
ORDER BY `donations`.`date` DESC
Run Code Online (Sandbox Code Playgroud) 我有一个简单的文章和评论系统与下表:
文章表:
id | writer | text
1 | Bob | first article
2 | Marley | second article
Run Code Online (Sandbox Code Playgroud)
评论表:
id | article_id | comment
1 | 1 | i love this article
2 | 1 | good one
3 | 2 | waiting for more
Run Code Online (Sandbox Code Playgroud)
我想选择每篇文章及其下面的评论.我使用以下查询:
SELECT * FROM articles LEFT JOIN comments ON articles.id = comments.article_id
Run Code Online (Sandbox Code Playgroud)
结果我得到:
articles.id | articles.writer | articles.text | comments.id | comments.article_id | comments.comment
1 | Bob | first article | 1 | 1 …
Run Code Online (Sandbox Code Playgroud) join ×10
sql ×8
mysql ×6
select ×2
t-sql ×2
create-table ×1
database ×1
file ×1
foreign-keys ×1
group-by ×1
inner-join ×1
linux ×1
ms-access ×1
oracle ×1
php ×1
shell ×1
sql-server ×1
unix ×1
view ×1