Подтвердить что ты не робот

SQL: два оператора select в одном запросе

Я хочу выбрать информацию из двух таблиц SQL в одном запросе, однако информация не связана, поэтому потенциальные суставы не существуют.

Примером может быть следующая настройка.

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

Я хочу получить запрос, который дает мне следующее:

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

Я попытался следовать этой логике: Несколько операторов select в одном запросе, но следующий код не работал:

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 

Какие-нибудь советы по этому поводу? благодаря Info: футбол - просто упрощающий пример. В действительности невозможно поставить обе таблицы в одну и иметь новый столбец "команда". Две таблицы имеют совершенно разные структуры, но мне нужно что-то, что соответствует характеристикам этого примера.

4b9b3361

Ответ 1

Вы можете сделать что-то вроде этого:

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

Смотрите, например: https://dev.mysql.com/doc/refman/5.0/en/union.html

Ответ 2

Если вам нравится вести записи отдельно, а не делать объединение.
Попробуйте выполнить запрос ниже

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

Ответ 3

Заявление UNION - ваш друг:

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;

Ответ 4

Вы можете объединять запросы, пока совпадают столбцы.

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

Ответ 5

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

Ответ 6

Вы можете комбинировать данные из двух таблиц, сначала заказывать по стартовым целям, а затем выбирать верхние два следующим образом:

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;

Если вы хотите только Месси и Роналду

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

Чтобы гарантировать, что messi находится в верхней части результата, вы можете сделать что-то вроде этого:

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

Ответ 7

Использование объединения поможет в этом случае.

Вы также можете использовать join при условии, которое всегда возвращает true и не связано с данными в этих таблицах. См. ниже

выберите tmd.name, tbc.goals из tblMadrid tmd join tblBarcelona tbc on 1 = 1;

Ответ 8

В этом случае вы можете использовать UNION

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

вам нужно поддерживать порядок выбранных столбцов, т.е. идентификатор, имя, игры, цели в обоих SQL.