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.

 39
Author: Community, 2015-08-13

8 answers

Podes fazer uma coisa destas.
 (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

 62
Author: Ray Kiddy, 2019-08-30 04:51:19

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
 20
Author: user206168, 2017-08-29 17:58:00

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;
 6
Author: oxymoron, 2015-08-13 03:44:15

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 
 3
Author: Wyatt Shipman, 2015-08-13 04:05:47
select name, games, goals
from tblMadrid where name = 'ronaldo'
union
select name, games, goals
from tblBarcelona where name = 'messi'
ORDER  BY goals 
 1
Author: Mathusuthanan, 2015-08-13 05:24:08

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;
 0
Author: zedfoxus, 2015-08-13 03:31:47
Neste caso, a utilização da União ajudará.

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;

 0
Author: Amandeep Singh, 2015-08-13 05:59:59

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

 -1
Author: Akash, 2015-08-13 04:01:28