Попытка написать запрос подсчета l oop на основе печати другой таблицы - PullRequest
1 голос
/ 19 апреля 2020

У меня есть две таблицы:

access(name, id, check, key)

events(name, key, event_name)

Я пытаюсь распечатать некоторые вещи из этих таблиц в таблицу php / html со следующими столбцами:

name, key, event_name, access count

Моя проблема Я хотел бы, чтобы каждое событие отображало «количество» строк доступа, имеющих одинаковый ключ.

Пример таблицы событий:

name  key  event_name
test  1  first
joe  2  second

И таблица доступа ...

name  id  check  key
test  123  yes  1
test  1235  yes  1
joe  175  yes  2
joe  852  yes  2
test  5843  yes  1
test  123455  yes  1

Получившуюся таблицу я надеюсь выглядела так:

name  key  event_name  access count
test  1  first  4
joe  2  second  2

Кто-нибудь знает, как это сделать? Я дошел до этого, но он, очевидно, не работает, потому что ключ не передается внутреннему запросу выбора ...

select event_name, name, key, 
       (SELECT COUNT(key) FROM access WHERE key=key AND name=name) 
from event;

Спасибо всем, кто взглянул и может иметь какие-либо идеи ! Я смотрел на это и на w3schools часами

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

В настоящее время ваш подзапрос вернет счетчик всех строк, поскольку он не связан с основным запросом, поэтому оба вхождения key в key=key будут ссылаться на один и тот же столбец, и выражение всегда будет истинным (аналогично для name). Чтобы сопоставить подзапрос, добавьте ссылки на таблицы:

select event_name, name, key, 
       (SELECT COUNT(key) FROM access a WHERE a.key=e.key AND a.name=e.name) AS `access count`
from event e
1 голос
/ 19 апреля 2020

Вы также можете получить те же результаты с объединением и агрегацией:

select e.name, e.key, e.event_name, count(*) access_count
from event e
left join access a on a.key = e.key and a.name = e.name
group by e.name, e.key, e.event_name
...