powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Вложенные запросы
8 сообщений из 8, страница 1 из 1
Вложенные запросы
    #40124524
0x277353
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте. Имеются таблицы messages и attachments (см. ниже), в которых хранятся сообщения чата и их вложения.

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

Сейчас я имею 4 664 записи в messages и 179 в attachments. Пробую сделать это запросом ниже, вроде всё работает, но возвращается общее количество записей в attachments.
Код: plaintext
SELECT COUNT(*), (SELECT COUNT(DISTINCT(message)) FROM attachments WHERE author=author), COUNT(DISTINCT(channel)) FROM messages WHERE author=?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE IF NOT EXISTS "messages" (
    id        UNSIGNED INTEGER,
    author    UNSIGNED INTEGER,
    channel   UNSIGNED INTEGER,
    guild     UNSIGNED INTEGER,
    content   TEXT,
    datetime  TIMESTAMP
);

CREATE TABLE IF NOT EXISTS "attachments" (
    message   UNSIGNED INTEGER,
    channel   UNSIGNED INTEGER,
    filename  TEXT,
    data      BLOB
);



Несколько записей из таблиц.

idauthorchannelcontentdatetime925863534343106640466372078770192405878864652937863209чё2021-12-29 21:31:08926021188931690517341625513451716610878864652937863209статистика поднялась с * до 8 после этого трека мне это нравится2021-12-30 07:57:369260368148154614964663720787701924058930968652460851402021-12-30 08:59:41

messagechannelfilenamedata925863534343106640878864652937863209unknown.pngBLOB926021188931690517878864652937863209unknown.pngBLOB926036814815461496893096865246085140BjK-B1tHHMU.pngBLOB
...
Рейтинг: 0 / 0
Вложенные запросы
    #40124560
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0x277353
Сейчас я имею 4 664 записи в messages и 179 в attachments. Пробую сделать это запросом ниже, вроде всё работает, но возвращается общее количество записей в attachments.
Код: plaintext
SELECT COUNT(*), (SELECT COUNT(DISTINCT(message)) FROM attachments WHERE author=author), COUNT(DISTINCT(channel)) FROM messages WHERE author=?


Ты забыл указать какой таблице принадлежит поле author во вложенном запросе.
Код: sql
1.
attachments.author=messages.author
...
Рейтинг: 0 / 0
Вложенные запросы
    #40124716
0x277353
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в тот день смотрел свой запрос и понял, что я дурак. В attachments в принципе нет поля author, а я смотрю его. Здесь надо что-то делать с полем message, но вот что — мы с знакомым не понимаем.
...
Рейтинг: 0 / 0
Вложенные запросы
    #40124791
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0x277353
Я в тот день смотрел свой запрос и понял, что я дурак. В attachments в принципе нет поля author, а я смотрю его. Здесь надо что-то делать с полем message, но вот что — мы с знакомым не понимаем.
Надо использовать связь между таблицами. По какому критерию ты определяешь что данное приложение принадлежит к такому-то сообщению? Вот эту связь и надо использовать во вложенном запросе.

attachments.message = messages.id ?
...
Рейтинг: 0 / 0
Вложенные запросы
    #40125070
0x277353
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да таблица вложений пока никак не используется. Закос на будущее и для статистики пользователя.

Условие attachments.message = messages.id работать не будет, уже проверял — будет искать лишь для последнего message.id, чего мне не надо.
...
Рейтинг: 0 / 0
Вложенные запросы
    #40125071
0x277353
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за долгие ответы, это место для меня в новинку и я попросту забываю о нём. Надеюсь на понимание.
Мы можем списаться в каких-нибудь мессенджерах или чатах вроде Телеграма или Discord, если Вас это не затруднит?
Там я наиболее активен, да и здесь кроме вас никто не заинтересован в помощи мне.
...
Рейтинг: 0 / 0
Вложенные запросы
    #40125073
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0x277353
Условие attachments.message = messages.id работать не будет, уже проверял — будет искать лишь для последнего message.id, чего мне не надо.

Тебе же сказали что это связь. Читай про JOIN . А лучше теорию SQL почитай, как запросы писать, она не большая. Ни тут, ни в мессенджерах никто тебе теорию не будет объяснять. Не хочешь вникать - в форум Работа , там все сделают за умеренную плату.

Для начала сделай отдельное получение каждого значения. Это элементарная задача, тут особо подсказывать нечего, только готовый результат можно дать.
...
Рейтинг: 0 / 0
Вложенные запросы
    #40125077
0x277353
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, вникнуть я хочу, за этим я сюда и пришёл. Я лишь ни разу не работал с JOIN, из-за чего ничего не понял про «связь».
Почитал и сделал всё так, как надо. Большое спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Вложенные запросы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (7): Анонимы (6), Yandex Bot 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]