|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Добрый день. Есть таблица "social_interaction", поля "PlayerID" INTEGER NOT NULL, "GuestID" INTEGER NOT NULL, "GuestName" TEXT, "Date" datetime NOT NULL Сделал запрос (дата и PlayerID для фильтра динамические): Код: sql 1.
отлично отрабатывает. (из Delphi срабатывает так, в Navicat условие по дате надо делать в виде Date > date('2020-05-02') ) Всего в таблице например 90 уникальных GuestID. Из них в запрос под условия попадает например 69. Подскажите, как можно допилить запрос, чтобы записи, не попадающие под условия изначального запроса, добавить туда же с Qty 0 ? (да хоть как добавить, там я уже разберусь) Дамп таблицы прицепил файлом. Файл упорно не цепляется, даже архивом. Выложил тут: stealth.od.ua/download/social_interaction.sql Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 13:16 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r, Например, добавить union all и селект с условием where Date < ''2020-05-02'' AND PlayerID <> 6935920 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 17:29 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
VSVLAD Vizit0r, Например, добавить union all и селект с условием where Date < ''2020-05-02'' AND PlayerID <> 6935920 вопрос в том, даже у тех, что попадут в первый запрос есть поля с датой меньше заданной. Но у кого-то есть заходы и старее, и новее, а у кого-то только старее. Вот я и ломаю голову, как бы это так составить. P.S. Выполняется такой запрос раз в несколько дней, так что вопрос производительности не стоит вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 22:13 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r VSVLAD Vizit0r, Например, добавить union all и селект с условием where Date < ''2020-05-02'' AND PlayerID <> 6935920 вопрос в том, даже у тех, что попадут в первый запрос есть поля с датой меньше заданной. Но у кого-то есть заходы и старее, и новее, а у кого-то только старее. Вот я и ломаю голову, как бы это так составить. P.S. Выполняется такой запрос раз в несколько дней, так что вопрос производительности не стоит вообще. https://www.sql.ru/forum/983207/kak-prosit-pomoshhi-s-zaprosom Обрати внимание на пункты 2 и 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 00:59 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
White Owl Vizit0r пропущено... вопрос в том, даже у тех, что попадут в первый запрос есть поля с датой меньше заданной. Но у кого-то есть заходы и старее, и новее, а у кого-то только старее. Вот я и ломаю голову, как бы это так составить. P.S. Выполняется такой запрос раз в несколько дней, так что вопрос производительности не стоит вообще. https://www.sql.ru/forum/983207/kak-prosit-pomoshhi-s-zaprosom Обрати внимание на пункты 2 и 4 пункт 2 выполнен, в полном дампе есть и создание таблицы, и ее содержимое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 06:23 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
все, слепил голема. Выглядит страшно, но работает правильно. Код: sql 1. 2. 3.
(финальная версия из Delphi перед отправкой в БД) Нумерация NoId правда не сквозная вышла, сначала идут номера с первого запроса, потом опять с 1 записи из второго запроса - но это вообще не принципиальный вопрос. Спасибо за наводку на мысль с union Результат: ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 07:32 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r, Оберните вложение в архив. Браузеры не дают скачивать расширение sql ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 07:57 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
приложил в архиве. Но вопрос решен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 12:55 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r Но вопрос решен. Эту корявость Вы называете "решением"? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:45 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Вот так, сначала пишутся подобные запросы, а потом сайт госуслуг падает :( Запрос здорового человека Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 21:12 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Cat2, Ого, это круто. Большое спасибо. P.S. Приложение для себя и еще пары человек, так что ничего бы не упало :) авторЭту корявость Вы называете "решением"? ну...оно работало :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 09:44 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Cat2, Посмотрел в ваш запрос, попытался его применить, и сообразил, что самого главного-то в нем и нет - кол-ва Qty заходов после заданной даты. Попытался изменить Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
ожидаемо COUNT(GuestID) возвращает все вхождения в базу, а не старше заданной даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 10:00 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r, внутри Count можно сделать case when, если условие истино то guest_id, если ложно то null и count верно подсчитает по датам > указанной ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 10:48 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Работает отлично, большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 11:34 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
господа знатоки, подскажите, почему 2 почти одинаковых запроса, только второй с двумя закомментированными полями в селекте - считают по-разному? Оригинальный запрос (из поста выше) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
guest, по которому расхождение: PlayerId GuestID GuestName FirstDate LastDate Qty 6935920 1037342 Foxter93 2020-03-26 21:54:00.000 2020-05-08 07:24:00.000 1 Запрос с двумя закомментированными полями(FirstDate и LastDate) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
PlayerId GuestID GuestName Qty 6935920 1037342 Foxter93 0 Почему так? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 11:46 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r, Не так. Это: Код: sql 1.
Заменить на: Код: sql 1.
Тогда последнего вопроса возникнуть не должно. Иначе у вас группировка неверно отрабатывает, а SQLite не говорит ошибок, если в Group By перечислены не все поля, которые используются в Select, но влияют на аггрегацию ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 12:23 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Спасибо, поменял, отлично работает. Теперь вопрос точно решен полностью ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 12:56 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r, Во-первых, Вы нигде четко и ясно не писали, что такое Qty. Во-вторых, в присланной таблице желаемых результатов были только 1 и 0. В-третьих, присланный Вами дамп не содержал игроков, которые были в итоговой таблице и я не мог с уверенностью сказать, что мой запрос точно соответствует желаемому. Ну и в-четвертых. Проще надо быть в запросах!! Vizit0r Спасибо, поменял, отлично работает. Теперь вопрос точно решен полностью Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 13:48 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Vizit0r Почему так? Потому, что второй запрос неправильный. SQlite вообще как-то странно обрабатывает агрегатирующий запросы. Например, он позволяет такую конструкцию: Код: sql 1. 2. 3. 4. 5. 6. 7.
В других СУБД она не прошла бы на уровне проверки синтаксиса, а SQLite срабатывает так, как будто в нем есть функция FIRST Так можно написать в некоторых СУБД Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 14:20 |
|
Дополнение запроса для показа значений, не вошедших в условия изначального запроса.
|
|||
---|---|---|---|
#18+
Cat2 Vizit0r, Во-первых, Вы нигде четко и ясно не писали, что такое Qty. Во-вторых, в присланной таблице желаемых результатов были только 1 и 0. В-третьих, присланный Вами дамп не содержал игроков, которые были в итоговой таблице и я не мог с уверенностью сказать, что мой запрос точно соответствует желаемому. Ну и в-четвертых. Проще надо быть в запросах!! 1) мне казалось, что это избыточная информация, не хотел захламлять вопрос. 2) Виноват( 3) БД постоянно дополняется, так-то надо было конечно выполнять запросы на той же копии, что я сюда скидывал - но не сообразил. 4) Это единственный случай был за последние лет 15, когда моих примитивных познаний sql не хватило, гугл не помог, и пришлось просить помощи у профессионалов. И да, вам отдельное спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 14:20 |
|
|
Start [/forum/topic.php?fid=54&fpage=2&tid=2008363]: |
0ms |
get settings: |
16ms |
get forum list: |
16ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
78ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
374ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 803ms |
0 / 0 |