SQL: twee select-statements in één query

Ik wil informatie uit twee SQL-tabellen selecteren binnen één query, de informatie is echter niet gerelateerd, dus er zijn geen mogelijke verbindingen.

Een voorbeeld kan de volgende opstelling zijn.

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

Ik wil een vraag hebben die me het volgende geeft:

name    | games | goals
messi   | 150   | 200
ronaldo | 100   | 100

Ik heb geprobeerd deze logica te volgen: Multiple-select-statements in Single querymaar de volgende code werkte niet:

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 

Enig advies hierover? Bedankt
Info: De voetbaldingen zijn slechts een vereenvoudigend voorbeeld. In werkelijkheid is het niet mogelijk om beide tabellen in één te plaatsen en een nieuwe “team” kolom te hebben. De twee tabellen hebben totaal verschillende structuren, maar ik heb iets nodig dat overeenkomt met de kenmerken van dit voorbeeld.


Antwoord 1, autoriteit 100%

Je kunt zoiets als dit doen:

(SELECT
    name, games, goals
    FROM tblMadrid WHERE name = 'ronaldo')
 UNION
 (SELECT
    name, games, goals
    FROM tblBarcelona WHERE name = 'messi')
ORDER BY goals;

Zie bijvoorbeeld: https://dev.mysql.com /doc/refman/5.0/en/union.html


Antwoord 2, autoriteit 34%

Als je de administratie gescheiden wilt houden en niet de vakbond wilt doen.
Probeer onderstaande zoekopdracht

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

Antwoord 3, autoriteit 11%

De UNION-verklaring is je vriend:

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;

Antwoord 4, autoriteit 5%

U kunt de zoekopdrachten samenvoegen zolang de kolommen overeenkomen.

SELECT name,
       games,
       goals
FROM   tblMadrid
WHERE  id = 1
UNION ALL
SELECT name,
       games,
       goals
FROM   tblBarcelona
WHERE  id = 2 

Antwoord 5, autoriteit 4%

Je kunt gegevens uit de twee tabellen combineren, eerst sorteren op hoogste doel en vervolgens de bovenste twee als volgt kiezen:

mysql

select *
from (
  select * from tblMadrid
  union all
  select * from tblBarcelona
) alldata
order by goals desc
limit 0,2;

SQL Server

select top 2 *
from (
  select * from tblMadrid
  union all
  select * from tblBarcelona
) alldata
order by goals desc;

Als u alleen Messi en Ronaldo

wilt

select * from tblBarcelona where name = 'messi'
union all
select * from tblMadrid where name = 'ronaldo'

Om ervoor te zorgen dat Messi bovenaan het resultaat is, kunt u zoiets doen:

select * from (
  select * from tblBarcelona where name = 'messi'
  union all
  select * from tblMadrid where name = 'ronaldo'
) stars
order by name;

Antwoord 6, Autoriteit 3%

select name, games, goals
from tblMadrid where name = 'ronaldo'
union
select name, games, goals
from tblBarcelona where name = 'messi'
ORDER  BY goals 

Antwoord 7

Gebruik Union zal in dit geval helpen.

U kunt ook toetreding gebruiken in een voorwaarde die altijd true retourneert en niet gerelateerd is aan gegevens in deze tabellen.See hieronder

Selecteer TMD .Name, tbc. gaals van TBLMADRID TMD Doe mee met TBLBARCELONA TBC op 1 = 1;


Antwoord 8

U kunt de Unie in dit geval gebruiken

select id, name, games, goals from tblMadrid
union
select id, name, games, goals from tblBarcelona

U hoeft alleen de volgorde van geselecteerde kolommen te handhaven, dwz ID, naam, games, doelen in beide SQLS

Other episodes