#mysql #select #union
#mysql #выберите #объединение
Вопрос:
1000 Извинений, если я повторил вопрос, не смог найти здесь ответ на свой вопрос.
Я пытаюсь извлечь данные из 2 отдельных столбцов из 2 несвязанных таблиц в одном запросе.
Я пытался использовать UNION
инструкцию, но проблема в том, что мне нужно иметь возможность разделять результаты на «места проведения» и «программы» — вот что я сделал:
SELECT venue_name
FROM my_venues
UNION
SELECT programme_title
FROM my_programmes;
Может быть, нет необходимости объединять запрос, и я могу просто выполнить 2 отдельных запроса? База данных не будет особенно большой, но это кажется ненужным…
Помогите и спасибо!
Комментарии:
1. Что за странные вещи ты говоришь. Это сайт, где вы просите людей о помощи, не так ли?! Это не полезный комментарий.
Ответ №1:
Просто добавьте постоянный столбец в обе выборки с одинаковым именем, но разными значениями:
SELECT "venues" as source, venue_name as thing_name
FROM my_venues
UNION ALL
SELECT "programmes" as source, programme_title as thing_name
FROM my_programmes;
Теперь:
- Строки со значением «места» для столбца
source
будут получены из таблицыmy_venues
, - строки со значением «programs» для столбца
source
будут получены из таблицыmy_programmes
.
Комментарии:
1. Хорошая уловка
UNION ALL
, действительно, повторяющихся строк больше не будет, поэтому проверки можно и нужно избегать.2. Хм. Запрос возвращает результаты нормально, но все возвращаемые результаты имеют один и тот же ключ
venue_name
. Запрос действителен, но строкаSELECT "programmes" as source, programme_title
игнорируется, иprogramme_titles
всем присваивается ключvenue_name
3. Извините, UNION должны иметь идентичные таблицы. Это включает в себя оба имени столбца — переименуйте также второй столбец (например, в
thing_name
).4. Боюсь, тот же результат ..
Array( [source] => venues [venue] => some venue)
и дляprogramme_titles
:Array( [source] => programmes [venue] => some programme
.