Je souhaite sélectionner des informations à partir de deux tables SQL au sein d'une même requête. Ces informations ne sont toutefois pas liées, de sorte qu'aucune articulation potentielle n'existe.
Un exemple pourrait être la configuration suivante.
tblMadrid
id | name | games | goals
1 | ronaldo | 100 | 100
2 | benzema | 50 | 25
3 | bale | 75 | 50
4 | kroos | 80 | 10
tblBarcelone
id | name | games | goals
1 | neymar | 60 | 25
2 | messi | 150 | 200
3 | suarez | 80 | 80
4 | iniesta | 40 | 5
Je veux avoir une requête qui me donne les informations suivantes:
name | games | goals
messi | 150 | 200
ronaldo | 100 | 100
J'ai essayé de suivre cette logique: Plusieurs instructions de sélection dans une requête unique mais le code suivant ne fonctionnait pas:
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
Un conseil sur celui-ci? ThanksInfo: Le football n'est qu'un exemple simplificateur. En réalité, il n'est pas possible de mettre les deux tableaux en un et d'avoir une nouvelle colonne "équipe". Les deux tables ont des structures complètement différentes, mais j'ai besoin de quelque chose qui corresponde aux caractéristiques de cet exemple.
Vous pouvez faire quelque chose comme ça:
(select
name, games, goals
from tblMadrid where name = 'ronaldo')
union
(select
name, games, goals
from tblBarcelona where name = 'messi')
order by goals;
Voir, par exemple: https://dev.mysql.com/doc/refman/5.0/en/union.html
La déclaration de l’UNION est votre amie:
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;
Si vous aimez garder des registres séparés et ne pas faire l'union.
Essayez la requête ci-dessous
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
Vous pouvez fusionner les requêtes tant que les colonnes correspondent.
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
Vous pouvez combiner les données des deux tables, en commençant par les objectifs les plus élevés, puis choisissez les deux premières comme ceci:
MySQL
select *
from (
select * from tblMadrid
union all
select * from tblBarcelona
) alldata
order by goals desc
limit 0,2;
Serveur SQL
select top 2 *
from (
select * from tblMadrid
union all
select * from tblBarcelona
) alldata
order by goals desc;
Si vous voulez seulement Messi et Ronaldo
select * from tblBarcelona where name = 'messi'
union all
select * from tblMadrid where name = 'ronaldo'
Pour vous assurer que messi figure en haut du résultat, vous pouvez procéder comme suit:
select * from (
select * from tblBarcelona where name = 'messi'
union all
select * from tblMadrid where name = 'ronaldo'
) stars
order by name;
L'utilisation de l'union aidera dans ce cas.
Vous pouvez également utiliser la jointure sur une condition qui renvoie toujours la valeur true et qui n'est pas liée aux données de ces tables.Voir ci-dessous.
sélectionnez tmd .name, tbc.goals à partir de tblMadrid tmd rejoindre tblBarcelona à confirmer sur 1 = 1;