Я новичок в MySQL и учусь через PluralSight. Я пытаюсь выполнить запрос с результатом 4 столбца. 3 из 4 столбцов происходят из одного и того же столбца, но отличаются предложением WHERE, направленным на числовое значение. Кроме того, я добавляю столбец из другой таблицы. Мне кажется, исправить это очень просто, но, как я уже сказал, я новичок в этом. По отдельности разделы работают отлично, но я не знаю, как правильно их соединить. Любая помощь будет оценена по достоинству. Моя работа на данный момент представлена ниже.
Select answer as FirstName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 1
Select answer as MI
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 54
Select answer as LastName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 55
Select request_date
FROM glpi.glpi_plugin_formcreator_forms_answers
Это справедливый момент. Человек, отвечающий за базу данных, отсутствует, и у меня нет идентификаторов столбцов, поэтому я работаю вслепую.
Обычно мы используем union, когда у нас есть несколько предложений where. Вы можете использовать предложение UNION.
Select answer as FirstName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 1
UNION
Select answer as MI
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 54
UNION
Select answer as LastName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 55
UNION
Select request_date
FROM glpi.glpi_plugin_formcreator_forms_answers
Моей первой мыслью было использовать UNION, однако он превратился в мега-колонку. : / Есть ли у вас источники, которые могут немного лучше объяснить UNION?
Попробуй это:
Select case when plugin_formcreator_questions_id=1 then answer end as FirstName,
case when plugin_formcreator_questions_id=54 then answer end as MI,
case when plugin_formcreator_questions_id=55 then answer end as LastName
FROM glpi.glpi_plugin_formcreator_answers
Это помогло мне получить несколько столбцов! Спасибо. Как мне включить последний раздел: выберите request_date ОТ glpi.glpi_plugin_formcreator_forms_answers
к какой таблице вы хотите присоединиться? и если ответы сработали для вас, пожалуйста, примите мой ответ
будет здорово, если вы приведете в своем вопросе какие-то табличные данные, тогда это будет легко понять
Таблица, которую я хочу создать, будет объединять ответы из формы для автоматизации создания учетной записи пользователя. ID 1 - это имя, ID 54 - среднее начальное, ID 55 - это фамилия, а четвертый столбец - для даты, запрошенной из формы.
Это не ответ
Поскольку я подозреваю, что вы упускаете что-то важное в своих требованиях
Я просто хочу представить вам подход к тому, что вы хотите получить, единственное, чего вам не хватает, - это столбец GROUP BY
.
SELECT
IF(plugin_formcreator_questions_id = 1,answer, null) as FirstName
IF(plugin_formcreator_questions_id = 54,answer, null) as MI,
IF(plugin_formcreator_questions_id = 55,answer, null) as LastName,
request_date
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id IN (1,54,55)
Итак, окончательная версия должна быть примерно такой:
SELECT
form_id,
MAX(IF(plugin_formcreator_questions_id = 1,answer, null)) as FirstName
MAX(IF(plugin_formcreator_questions_id = 54,answer, null)) as MI,
MAX(IF(plugin_formcreator_questions_id = 55,answer, null)) as LastName,
MAX(request_date)
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id IN (1,54,55)
GROUP BY form_id
Я считаю, что это также поможет мне, так как я считаю, что в базе данных отсутствует часть информации. Спасибо за помощь!
Есть ли у вас предложение для включения: Выберите request_date ИЗ glpi.glpi_plugin_formcreator_forms_answers ГДЕ plugin_formcreator_forms_answers_id = glpi_plugin_formcreator_forms_answers.id
@CillyC просто замените form_id
в моем запросе на id
в обоих случаях, когда SELECT
и когда GROUP BY
, я думаю
Я думаю, вам нужно получить 4 столбца в конце. Как вы определите, какой
FirstName
соответствует любомуLastName
? То есть, у вас должно быть какое-то другое поле, подозреваю что-то вродеFormId
или что-то еще, а то нет смысла