Требуется справка по запросу базы данных в MySQL

0

Я ищу помощь в написании запроса извлечения значений из 2 таблиц в MySQL.

Сценарий

Таблица A

ID    Name    Marks
===================
23    John    67
45    Mark    45
12    Ram     87

Таблица B имеет следующую структуру

ID    Name    Evaluation Marks
==============================
45    Mark    34
78    Chris   09
98    Nancy   10
23    John    12

Я пытаюсь написать запрос, где, если я выполнил следующий запрос

Select "SOMETHING" from Table A where Id=45

Я должен получить столбцы Marks как 45 + 34 = 79, которые должны извлекать и суммировать из таблиц A и таблицы B.

Если я выполняю запрос с Id = 12. Поскольку Id = 12, не существует в таблице B, я должен получить отметки как 87.

Что будет для запроса выше?

  • 0
    Пожалуйста, смотрите мой отредактированный ответ.
Теги:
database

1 ответ

1
Лучший ответ

Я предполагаю, что идентификатор встречается только один раз в таблице ваши таблицы, но может отсутствовать в обоих. Если он всегда существует в таблице a, вы можете использовать LEFT JOIN вместо UNION.

SELECT COALESCE(SUM(marks), 0)
FROM
(
  SELECT marks FROM a WHERE id = 45
  UNION ALL
  SELECT SUM(evaluation_marks) AS marks FROM b WHERE id = 45
) x

Edit

Если у вас есть все пользователи в таблице a, используйте

SELECT a.marks + COALESCE( SUM( b.evaluation_marks ), 0 )
FROM a
LEFT OUTER JOIN b ON ( b.id = a.id )
WHERE a.id = 45
GROUP BY a.id, a.marks

Однако вы должны изменить свою модель таблицы. Почему вы дважды храните имя и идентификатор? Вы не можете сделать это так:

id    name    marks    evaluation marks
=======================================
12    Ram     87        0
23    John    67       12
45    Mark    45       34
78    Chris    0        9
98    Nancy    0       10
  • 0
    Изменения в вашей базе данных действительны, я изменю структуру таблицы, это облегчит мою работу по разработке, Спасибо за ваше предложение
  • 0
    Я выбрал хранение в отдельной таблице, чтобы несколько раз можно было сохранять оценочные метки для определенного идентификатора. Идея, которую вы дали, если мы будем использовать ее, я не смогу сохранить несколько раз для выбранного идентификатора.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню