SQL: duas opções numa consulta
Eu quero selecionar informação de duas tabelas SQL dentro de uma consulta, mas a informação não está relacionada, de modo que nenhuma articulação potencial existe.
um exemplo pode ser a seguinte configuração.
TblMadrid
id | name | games | goals
1 | ronaldo | 100 | 100
2 | benzema | 50 | 25
3 | bale | 75 | 50
4 | kroos | 80 | 10
TblBarcelona
id | name | games | goals
1 | neymar | 60 | 25
2 | messi | 150 | 200
3 | suarez | 80 | 80
4 | iniesta | 40 | 5
quero ter uma pergunta que me dê o seguinte:
name | games | goals
messi | 150 | 200
ronaldo | 100 | 100
eu tentei seguir esta lógica: múltiplas opções em consulta única mas o seguinte código não trabalho:
USE Liga_BBVA
SELECT (SELECT name,
games,
goals
FROM tblMadrid
WHERE name = 'ronaldo') AS table_a,
(SELECT name,
games,
goals
FROM tblBarcelona
WHERE name = 'messi') AS table_b
ORDER BY goals
Algum conselho sobre isto? Obrigado
Info: O material do futebol é apenas um exemplo de simplificação. Na realidade, não é possível colocar ambas as tabelas em uma e ter uma nova coluna de "equipe". As duas tabelas têm estruturas completamente diferentes, mas eu preciso de algo que corresponda às características deste exemplo.
8 answers
(SELECT
name, games, goals
FROM tblMadrid WHERE name = 'ronaldo')
UNION
(SELECT
name, games, goals
FROM tblBarcelona WHERE name = 'messi')
ORDER BY goals;
Ver, por exemplo: https://dev.mysql.com/doc/refman/5.0/en/union.html
Se gosta de manter registos separados e não fazer a União.
Tentar a pesquisa abaixo
SELECT (SELECT name,
games,
goals
FROM tblMadrid
WHERE name = 'ronaldo') AS table_a,
(SELECT name,
games,
goals
FROM tblBarcelona
WHERE name = 'messi') AS table_b
FROM DUAL
A declaração da União é tua amiga:
SELECT a.playername, a.games, a.goals
FROM tblMadrid as a
WHERE a.playername = "ronaldo"
UNION
SELECT b.playername, b.games, b.goals
FROM tblBarcelona as b
WHERE b.playername = "messi"
ORDER BY goals;
Podes ligar as consultas desde que as colunas coincidam.
SELECT name,
games,
goals
FROM tblMadrid
WHERE id = 1
UNION ALL
SELECT name,
games,
goals
FROM tblBarcelona
WHERE id = 2
select name, games, goals
from tblMadrid where name = 'ronaldo'
union
select name, games, goals
from tblBarcelona where name = 'messi'
ORDER BY goals
Você pode combinar dados das duas tabelas, ordem por objetivos mais alto primeiro e, em seguida, escolher os dois melhores como este:
MySQL
select *
from (
select * from tblMadrid
union all
select * from tblBarcelona
) alldata
order by goals desc
limit 0,2;
Servidor SQL
select top 2 *
from (
select * from tblMadrid
union all
select * from tblBarcelona
) alldata
order by goals desc;
Se você só quer Messi e Ronaldo
select * from tblBarcelona where name = 'messi'
union all
select * from tblMadrid where name = 'ronaldo'
Para garantir que messi está no topo do resultado, você pode fazer algo assim:
select * from (
select * from tblBarcelona where name = 'messi'
union all
select * from tblMadrid where name = 'ronaldo'
) stars
order by name;
Também pode usar o join numa condição que devolve sempre verdadeiro e não está relacionada com os dados nestas tabelas.Ver abaixo
Seleccione o tmd. name, TBC. goals do tblmadrid tmd Junte-se ao tblBarcelona tbc em 1=1;
Neste caso pode utilizar UNION
select id, name, games, goals from tblMadrid
union
select id, name, games, goals from tblBarcelona
O jsut tem de manter a ordem das colunas seleccionadas, ou seja, id, Nome, jogos, objectivos em ambos os SQLs