Присоединяйтесь к таблицам MySQL для отображения количества

Во-первых, я новичок в MySQL и все еще учусь. Я пытаюсь присоединиться к 2 таблицам, чтобы отобразить количество. В основном я использую 2 кода. Один код для отображения имен -

SELECT tag_logs.timestamp, People.Name FROM `tag_logs` INNER JOIN People  WHERE tag_logs.tag_no = People.nametag

Другой код для отображения количества имен -

SELECT tag_logs.tag_no, COUNT(tag_logs.tag_no) FROM tag_logs GROUP BY tag_no HAVING COUNT(tag_no) >= 1

Я хочу отображать имя и номер счетчика вместо номера тега и счетчика. Я попытался присоединиться к обеим таблицам, используя следующий код, однако мне не повезло:

SELECT People.Name FROM `tag_logs` INNER JOIN People  WHERE tag_logs.tag_no = People.nametag AND COUNT(tag_logs.tag_no) FROM tag_logs GROUP BY tag_no HAVING COUNT(tag_no) >= 1

Мне выдается ошибка, когда я пытаюсь вызвать FROM tag_logs во второй раз. Есть ли способ обойти это?

Я стремлюсь сделать это моим окончательным результатом, за исключением того, что я должен видеть имена вместо чисел.

условие соединения неверно

ch2019 20.04.2019 09:32
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
47
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Так должно быть

SELECT People.Name FROM `tag_logs`
INNER JOIN People on tag_logs.tag_no = People.nametag
GROUP BY tag_no HAVING COUNT(tag_no) >= 1

РЕДАКТИРОВАТЬ

SELECT People.Name, COUNT(tag_no)  FROM `tag_logs`
INNER JOIN People on tag_logs.tag_no = People.nametag
GROUP BY tag_no HAVING COUNT(tag_no) >= 1

@OloOlo добавил счет

Akash Popat 20.04.2019 09:38
Ответ принят как подходящий

Две таблицы соединены с помощью предложения ON. Вы должны изучить соединения.

SELECT  People.Name ,COUNT(tag_logs.tag_no) 
FROM `tag_logs`
INNER JOIN People  ON tag_logs.tag_no = People.nametag 
GROUP BY tag_logs.tag_no
HAVING COUNT(tag_no) >= 1

@Олооло. . . Этот запрос содержит более одной проблемы и не является иллюстрацией того, как правильно написать ответ на этот вопрос.

Gordon Linoff 20.04.2019 14:13

Я считаю, что запрос, который вы хотите, выглядит следующим образом:

SELECT p.Name, COUNT(*) 
FROM tag_logs tl INNER JOIN
     People p
     ON tl.tag_no = p.nametag 
GROUP BY p.Name;

Примечания:

  • COUNT(*) короче, чем COUNT(tl.tag_no), и они делают то же самое.
  • Предложение GROUP BY теперь соответствует SELECT. Если у вас могут быть люди с одинаковыми именами, добавьте p.nametag к GROUP BY. Версия, использующая только GROUP BY tl.tag_no, является недопустимым SQL и должна дать сбой в большинстве баз данных из-за несоответствия p.Name в SELECT.
  • Предложение HAVING (HAVING COUNT(tag_no) >= 1) не нужно, потому что INNER JOIN требует хотя бы одного совпадения, а tag_no никогда не является NULL (поскольку оно используется для JOIN).
  • Я ввел псевдонимы таблиц, чтобы запрос было легче писать и читать.

Другие вопросы по теме