При запросе подсчёта с условием выводит 0
Начал изучать базы данных, столкнулся с проблемой. Мне нужно, чтоб подсчитывалось количество id, у которых id_рефералов - id_польщователя, но почему-то выводит 0
def count_referals(self, user_id):
with self.connection:
return self.cursor.execute("SELECT COUNT('id') FROM 'users' WHERE 'referrer_id' = ?", (user_id,)).fetchone()[0]
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
Ответил в комментарии. Ниже пример того, как должен выглядеть код к вопросу
from sqlite3 import connect
user_id = 54279430
with connect('users.sqlite') as cn:
cn.execute(
"""
create table if not exists users
(
id INTEGER not null
constraint users_pk
primary key autoincrement,
user_id INTEGER
constraint user_id_key
unique,
username TEXT,
referrer_id INTEGER
constraint users_users_user_id_fk
references users (user_id)
on update cascade on delete restrict
);
"""
)
cn.execute(
"""
create index if not exists users_username_index
on users (username);
"""
)
cn.commit()
cr = cn.cursor()
cr.execute(
"""
insert into users (user_id, username, referrer_id)
VALUES (54279430, 'user1', null),
(5423886677, 'user2', 54279430),
(5579204231, 'user3', 54279430) on conflict do nothing ;
"""
)
cn.commit()
cr.execute("SELECT COUNT(`id`) FROM `users` WHERE `referrer_id` = ?", (user_id,))
qty, = cr.fetchone() or (None,)
cr.close()
print(
qty
)
