sqlite объединяет 2 запроса из разных таблиц в один - PullRequest
0 голосов
/ 25 февраля 2019

Я недавно снова начал использовать sql, последний раз, когда я использовал его, был в Microsoft Access 2000, поэтому, пожалуйста, потерпите меня, если я немного отстаю.

У меня есть 2 бессмысленные виртуальные валюты намой дискорд сервер для моих игроков, чтобы играть в бессмысленные игры.В настоящее время транзакции обеих этих валют хранятся в отдельных таблицах.

Я хочу суммировать все транзакции для каждого игрока, чтобы дать им единую текущую сумму для каждой валюты.По отдельности я могу сделать это:

SELECT
 tblPlayers.PlayerID AS PlayerID,
 tblPlayers.Name AS Name,
 SUM(tblGorillaTears.Amount) 
FROM 
 tblPlayers 
INNER JOIN 
 tblGorillaTears
ON 
 tblPlayers.PlayerID = tblGorillaTears.PlayerID 
GROUP BY 
 tblPlayers.PlayerID;

и

SELECT
 tblPlayers.PlayerID AS PlayerID,
 tblPlayers.Name AS Name,
 SUM(tblKebabs.Amount) 
FROM 
 tblPlayers 
INNER JOIN 
 tblKebabs 
ON 
 tblPlayers.PlayerID = tblKebabs.PlayerID 
GROUP BY 
 tblPlayers.PlayerID;

Мне нужна таблица, которая выводит имя пользователя, идентификатор и сумму для каждой валюты в одной строке, но когдая делаю это:

SELECT
 tblPlayers.PlayerID AS PlayerID,
 tblPlayers.Name AS Name,
 SUM(tblGorillaTears.Amount) AS GT,
 0 as Kebabs
FROM 
 tblPlayers 
INNER JOIN 
 tblGorillaTears
ON 
 tblPlayers.PlayerID = tblGorillaTears.PlayerID 
GROUP BY 
 tblPlayers.PlayerID
UNION 
SELECT
 tblPlayers.PlayerID AS PlayerID,
 tblPlayers.Name AS Name,
 0 as GP,
 SUM(tblKebabs.Amount) 
FROM 
 tblPlayers 
INNER JOIN 
 tblKebabs 
ON 
 tblPlayers.PlayerID = tblKebabs.PlayerID 
GROUP BY 
 tblPlayers.PlayerID;

результаты заканчиваются подряд для каждого игрока для каждой валюты.Как сделать так, чтобы обе валюты отображались в одной строке?

Ранее в MSAccess мне удавалось создать два запроса, а затем выполнить запрос этих двух запросов, как если бы они были таблицей, но я не могу понятькак это сделать в этом случае.Спасибо <3 </p>

1 Ответ

0 голосов
/ 25 февраля 2019

UNION добавит новые строки наверняка, вы можете попробовать как следующий запрос.

SELECT TP.playerid                        AS PlayerID, 
       TP.NAME                            AS NAME, 
       (SELECT Sum(TG.amount) 
        FROM   tblgorillatears TG 
        WHERE  TG.playerid = TP.playerid) AS GT, 
       (SELECT Sum(TG.amount) 
        FROM   tblkebabs TG 
        WHERE  TG.playerid = TP.playerid) AS Kebabs 
FROM   tblplayers TP 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...