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