MySQL выбирает столбцы из разных таблиц

#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 .