SQL Join Query: проблема с несколькими таблицами - PullRequest
0 голосов
/ 08 ноября 2010

Я хочу сделать запрос на соединение SQL. У меня есть три таблицы _A, _B, _C, скажем. И каждая таблица имеет столбец с именем «level», в котором некоторые элементы имеют значение 1,2,3.

Сначала я просто хотел элемент с уровнем = 1 из таблицы _A и написал:

SELECT * FROM _A WHERE level = "1" ORDER BY RANDOM() LIMIT 1

, который работал нормально.

Теперь я хочу выбрать случайный предмет с уровнем = 1 из любой из трех таблиц. Я написал:

SELECT * FROM _A, _B, _C WHERE level = "1" ORDER BY RANDOM() LIMIT 1

Это не сработало. Система рухнула. Но мой справочник говорит, что это способ сделать это. Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010
SELECT *
FROM (
    SELECT * FROM _A WHERE level = "1"
    UNION ALL
    SELECT * FROM _B WHERE level = "1"
    UNION ALL
    SELECT * FROM _C WHERE level = "1"
)
ORDER BY RANDOM() LIMIT 1 
0 голосов
/ 08 ноября 2010

Я согласен с Redfilter. Однако зачем вам три таблицы для этого, а не иметь дополнительный столбец в таблице A (ABC char (3))? И тогда каждая строка, которая была бы в таблице _B, имела бы B в этом столбце, а каждая строка, которая была бы в таблице _C, имела бы C в этом столбце. Затем вы можете использовать свой первый оператор выбора без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...